多线程问题 ( 积分: 200 )

  • 主题发起人 主题发起人 theone_jxm
  • 开始时间 开始时间
T

theone_jxm

Unregistered / Unconfirmed
GUEST, unregistred user!
如何判断那个线程先结束?并把先结束的线程的计算结果保留下来..
var
t1,t2,t3,t4:Tthread;
begin
t1:=Tthread.create(false);
t2:=Tthread.create(false);
t3:=Tthread.create(false);
t4:=Tthread.create(false);
我怎么知道t1,t2,t3,t4谁先执行完?
 
如何判断那个线程先结束?并把先结束的线程的计算结果保留下来..
var
t1,t2,t3,t4:Tthread;
begin
t1:=Tthread.create(false);
t2:=Tthread.create(false);
t3:=Tthread.create(false);
t4:=Tthread.create(false);
我怎么知道t1,t2,t3,t4谁先执行完?
 
可以让你的线程在结束时主动给主线程post一个自定义消息或调用一个synchronize方法, 主线程对接到的第一个通知进行处理就可以了
 
指定 t1(and 2 and 3 and 4).OnTerminate = XXX 即可得知。
 
定义 tm:array [1..4] of dword;
每个县城n结束前 tm[n]:=gettickcount();
然后排序tm,即可知道那个线陈先执行!
 
.OnTerminate() 指定事件
 
Tthread.SendText(Text:String);
begin
Form1.memo1.line.text:=Text;
end;

调用一个synchronize方法
synchronize(SendText(Text));
 
这个太简单,设置一个标志变量,只允许写一次结果
 
自定义一个OnTerminate事件
 
后退
顶部