临界区
大家都知道临界区、互斥变量等一些技术,它们是为了防止同时修改共享资源发生冲突而出现的,现在我想问,如果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;
大家都知道临界区、互斥变量等一些技术,它们是为了防止同时修改共享资源发生冲突而出现的,现在我想问,如果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;
要是b必须访问c就检测a访问完后
b访问
timer跟线程有相似之处
我觉得有一点是timer事件执行时
不能强行退出
线程可以随时挂起或停止
form1:=Form2;不行
一样吧可能他们是对象指针
必须先创建
如果你直接要
M:=MC的效果最好 M:=Pointer(MC);
可以不用create
不过两个是不同的class出错也正常
///////////////////等待,你可以做个测试,让一个资源永远不释放,那么其他现成的永远不执行