三个小问题 ( 积分: 7 )

  • 主题发起人 主题发起人 新手101010
  • 开始时间 开始时间

新手101010

Unregistered / Unconfirmed
GUEST, unregistred user!
[blue]
临界区
大家都知道临界区、互斥变量等一些技术,它们是为了防止同时修改共享资源发生冲突而出现的,现在我想问,如果A正在访问一个资源C,在这个时候,B也想访问C,由于A正在使用C,那么B是等待A使用在用呢,还是直接跳过不用C了???
线程与Timer
线程与Timer到底有什么区别,我见过很多东东,用timer代替线程的例子,什么时候用线程好,什么时候用Timer好
接口问题
做出一个小的接口程序,代码如下,
IMyable = interface
['{F416B266-E13B-41DC-87A8-5AE2FE53272A}'] //此行代码有没有都可以,有与没有它有什么区别
procedure ShowMsg;
end;

TMyClass = class(TInterfacedObject, IMyable)
procedure ShowMsg;
procedure ShowInfo;
end;


var
Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
var
MC: TMyClass;
M: IMyable;
begin
MC := TMyClass.Create;
M := MC
//M := TMyClass.Create;就不会出错
M.ShowMsg;
MC.Free
//为什么出错?
end;

{ TMyClass }

procedure TMyClass.ShowInfo;
begin
ShowMessage('ShowInfo Method');
end;

procedure TMyClass.ShowMsg;
begin
ShowMessage('ShowMsg Method');
end;
[/blue]
[red]小弟没分了[/red]
 
[blue]
临界区
大家都知道临界区、互斥变量等一些技术,它们是为了防止同时修改共享资源发生冲突而出现的,现在我想问,如果A正在访问一个资源C,在这个时候,B也想访问C,由于A正在使用C,那么B是等待A使用在用呢,还是直接跳过不用C了???
线程与Timer
线程与Timer到底有什么区别,我见过很多东东,用timer代替线程的例子,什么时候用线程好,什么时候用Timer好
接口问题
做出一个小的接口程序,代码如下,
IMyable = interface
['{F416B266-E13B-41DC-87A8-5AE2FE53272A}'] //此行代码有没有都可以,有与没有它有什么区别
procedure ShowMsg;
end;

TMyClass = class(TInterfacedObject, IMyable)
procedure ShowMsg;
procedure ShowInfo;
end;


var
Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
var
MC: TMyClass;
M: IMyable;
begin
MC := TMyClass.Create;
M := MC
//M := TMyClass.Create;就不会出错
M.ShowMsg;
MC.Free
//为什么出错?
end;

{ TMyClass }

procedure TMyClass.ShowInfo;
begin
ShowMessage('ShowInfo Method');
end;

procedure TMyClass.ShowMsg;
begin
ShowMessage('ShowMsg Method');
end;
[/blue]
[red]小弟没分了[/red]
 
(1)当然是B等待A使用完C后在用C拉,呵呵,此时B会先自己阻塞起来,当A用完C后会唤醒它,然后B再访问使用C资源。
(2)呵呵,不好意思,我也不清楚。
(3)接口的话没有GUID是可以,但是如果要通过此GUID来访问这个接口的话则必须有(看你的程序有没有这种需要了:),还有就是接口都是具有自动释放内存的机制了,如果你把一个变量引用赋给接口,那么你就不用手工去释放,不然会引发“重释放”异常,而如果直接用类的话则需你直接手工释放分配给它的内存。
 
1. M := MC
//M := TMyClass.Create;就不会出错
改为M:=Mc As IMyable;
2线程与Timer到底有什么区别?
这个问题其实不是一个档次的问题,线程是在设计期无法预测执行先后顺序的,而timer是可以知道并准确预测的.
 

Similar threads

S
回复
0
查看
3K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
2K
SUNSTONE的Delphi笔记
S
I
回复
0
查看
721
import
I
I
回复
0
查看
763
import
I
I
回复
0
查看
551
import
I
后退
顶部