delphi中Synchronize

delphi中Synchronize这个东东有什么用?我知道是线程同步使用的

是否是一个函数或变量,当一个线程在使用时,如果这个函数使用了Synchronize修钸的话就不允许别一个线程来调用这个函数

 

1楼:别的线程会等待该操作完成后才能继续
2楼:你说的基本是这个意思。它的目的是避免多个子线程同时访问主线程资源。
示例:
procedure ServerThread.ListItemEnd; //子线程的一个方法
begin
if (ListItem <> nil) then
ListItem.SubItems.Strings[3] := '传送完毕'; //ListItem是主线程的一个TreeView的一行
end;

procedure ServerThread.ClientExecute; //子线程执行
begin
Synchronize(ListItemEnd);
//如果直接写ListItemEnd,可能发生冲突。
end;


—————————————————————————————————
MaximStr := '宠辱不惊,看庭前花开花落,去留无意;
毁誉由人,望天上云卷云舒,聚散任风。';
if Not Assigned(I) then
I := TI.Create(Nil);
I.Maxim := MaximStr;
I.Explain := '假如上述代码中出现“OA”等字样,删除它们';
I.Desire := '加不加分随你';
—————————————————————————————————
     

3楼:当创建了多个线程,并且多个线程都要访问同一资源,,就有可能出现混乱,于是用Synchronize来控制,使同一时间只有一个线程使用那部分资源,Synchronize参数里面的代码就是多线程需要公共的代码!
4楼:1。synchronize方法的产生与vcl的局限性有关,因为vcl控件在同一时刻只能被单线程访问,如果多个线程同时访问vcl,vcl会出现问题。所以问了安全地访问vcl,Tthread类提供了一个方法叫synchronize,他可以让线程中的方法在主线程中执行,所以我们可以把访问vcl的代码都放在这个方法中,然后由主线程执行,从而确保vcl能被安全地访问调用.它的类型是TThreadMethod=procedure of object;procedure 参数:Sychronize(Method:TThreadMethod);
2。当创建一个线程时,vcl会在主线程中创建一个隐含的线程窗口,这个窗口的作用就是把synchronize调用的访问vcl的方法排队.synchronize把Method参数传递过来的方法保存在thread的fmethod字段中然后给线程窗口发一个cm_execproc消息,并把消息的lparam参数设为self,当线程窗口收到这个消息时,就调用Fmethod所制定的方法.
5楼:1.如果不访问vcl控件(vcl控件是不是就是窗口控件)是否也能用synchronize方法控制
2.如何获得线程的ID号
thx
6楼:加把油就完成了
7楼:1.如果不访问vcl控件(vcl控件是不是就是窗口控件)是否也能用synchronize方法控制
2.如何获得线程的ID号
================================
1、可以
2、TThread.ThreadID
—————————————————————————————————
MaximStr := '宠辱不惊,看庭前花开花落,去留无意;
毁誉由人,望天上云卷云舒,聚散任风。';
if Not Assigned(I) then
I := TI.Create(Nil);
I.Maxim := MaximStr;
I.Explain := '假如上述代码中出现“OA”等字样,删除它们';
I.Desire := '加不加分随你';
————————————————————————————————— 

8楼:暴雪讲的有理..
VCL有一个缺陷就是不支持多线程访问..
为了弥补这一缺陷borland使用了synchronize这一方法控制对VCL的并发访问

 

 

http://www.websnap123.com/show-TnpReE5USXk=.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值