如何实现线程的互斥??? 试参考createmutex\openMutex函数! 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 可以用临界来实现你在这个函数中写到Procedure xxxxx.xxMethod;Begin FCriticalSection.Enter; Try //your codes. Finally FCriticalSection.Leave; End;End;实际上 Mutex 实现也一样, 可能临界会占少一点的资源 我不知道TCriticalSection的具体用法啊!它究竟锁住哪些变量啊? comanche说的对,在程序员大本营2000 delphi版上有历程,大约在tipIII下,是属于undu的,找吧!!! TCriticalSection:是一个内核对象,它允许每个时间段内,只能有一个线程控制这个对象,比如说当前线程a占有TCriticalSection,线程b申请占有TCriticalSection,则线程a正常运行,只有当a释放TCriticalSection,b才能运行!FCriticalSection.Enter;申请,当已被别对象占有,则线程等待FCriticalSection.Leave;释放 我看过UNDU了,里面有很多内容啊!而且都是E文的,好象找不到我需要的东西! 用线程的阻塞或互斥都可以使线程同步。互斥:建立一个互斥对象,要调用CreatMutex()函数 , 用完了过后,用CloseHandle()把它关闭。比如建立一个互斥对象:public hMutex : THandle = 0 ;begin hMuterx := CreateMutex(nil,False,nil); THashThread.Create(False);//THashThread为自己建立的Thread的继承类 THashThread.Create(False);//两个线程,用hMuterx互斥同步。end; 我只是想锁住我的某个方法,让每个线程不能同时调用我的方法。-----你把你原来的代码填入下面:var CS:TCriticalSection;procedure TForm1.FormCreate;begin CS:=TCriticalSection.Create;end;procedure NewFunctin;begin try CS.Enter; ///你的代码!! finally CS。Leave;end;然后你各个线程调用这个newfunctin,每个时刻只允许一个线程调用newfunction这样一定可以! 如何让CXGRID中某列值依条件设定可写或不可写 list index out of bounds(1) Delphi5工程转移到Delphi7上出现问题 请问如何在DBGrid里面显示数据库中2个表的信息?谢谢(就10分了) 请高人帮我看看代码错在哪里,等待ing... 用delphi7如何实现以下功能。 ★★★为什么新字段不能显示出来??? 请问在D5中,怎样得到D6中daysofweektheyear()求得是第几个星期! 关于三层结构开发中接口参数的问题! 关于数据库的问题要问: 想在一个程序中,按下F1能显示帮助文件要如何设置? 怎么用sql语句是选择的纪录按照顺序排序显示
Begin
FCriticalSection.Enter;
Try
//your codes.
Finally
FCriticalSection.Leave;
End;
End;实际上 Mutex 实现也一样, 可能临界会占少一点的资源
它究竟锁住哪些变量啊?
FCriticalSection.Enter;申请,当已被别对象占有,则线程等待
FCriticalSection.Leave;释放
而且都是E文的,好象找不到我需要的东西!
互斥:
建立一个互斥对象,要调用CreatMutex()函数 ,
用完了过后,用CloseHandle()把它关闭。
比如建立一个互斥对象:
public hMutex : THandle = 0 ;
begin
hMuterx := CreateMutex(nil,False,nil);
THashThread.Create(False);//THashThread为自己建立的Thread的继承类
THashThread.Create(False);//两个线程,用hMuterx互斥同步。
end;
-----你把你原来的代码填入下面:
var CS:TCriticalSection;
procedure TForm1.FormCreate;
begin
CS:=TCriticalSection.Create;
end;
procedure NewFunctin;
begin
try
CS.Enter;
///你的代码!!
finally
CS。Leave;
end;
然后你各个线程调用这个newfunctin,每个时刻只允许一个线程调用newfunction
这样一定可以!