如何用TServerSock类实现多线程同步通信?(200分)

  • 主题发起人 主题发起人 dujun
  • 开始时间 开始时间
D

dujun

Unregistered / Unconfirmed
GUEST, unregistred user!
请哪位高手给个例子吧 ?!
 
ics就做过, TserverSocket ,没有做过
 
type
TMyThread=class(TServerClientThread)
private
FEvent:TSimpleEvent;
....
end;

var
Events:array[1..10] of TSimpleEvent;//所有线程的事件假设寸入此数组。
procedure TMyThread.Execute;
var
i:Integer;
Handles:array[1..10] of THandle;
begin
for i:=1 to 10do
Handles:=Events.Handle;//
while not Terminateddo
begin
FEvents.SetEvent;
//设置事件,通知其他线程本线程已准备好
WaitForMultipleObjects(10, Handles, TURE, INFINITE);//等待其他所有线程
FEvents.ResetEvent;
.....//同步后执行...
end;
end;

注意超时处理。

 
谢谢 Hexi,但不太明白,可否再详细一些。
 
每个线程进入等待前,设置其事件,告诉其他线程,本线程进入等待状态,
当所有线程均进入等待,即所有事件均被设置,WaitForMultipleObjects
就不再等待,线程继续执行。
若有10个线程,Handles中就有10个事件的句柄(每个线程中定义了一个事件)
WaitForMultipleObjects(10,Handles,TRUE,INFINITE)在这10个事件均被
SetEvent后返回。
 
请给我发个例子
johnyh@china.com
 
接受答案了.
 
也给我发一个吧!
liang_mayuan@263.net
 
后退
顶部