线程数组执行完,怎么唤起另一线程?(50分)

  • 主题发起人 主题发起人 systermman
  • 开始时间 开始时间
S

systermman

Unregistered / Unconfirmed
GUEST, unregistred user!
我不知道线程数组中最后一个线程何时停止,如果知道何时停止的话,我要做的操作是唤起另一个单独的线程。不知道怎么处理,高手帮帮忙!!!我的线程组是这么处理的,如下:
gThreadList := TThreadList.Create;
for li:=Low(gPosList) to High(gPosList)do
begin
FtUpLoad:= TUpLoad.Create;
//FtUpLoad.Findex := li;
gThreadList.Add(FtUpLoad);
end;
with gThreadList.LockListdo
try
for li:= 0 to Count-1do
begin
TUpLoad(Items[li]).Resume;
//重新唤起线程进行操作
TUpLoad(Items[li]).Findex := li;
end;
 
完成发消息通知。收到完成消息执行下一线程
 
有很多方法可以实现你的需求:
一、在线程结束时发送一个自定义消息给主线程,线程数量减一,当线程数量为零时,
  表示线程已全部执行完成;
二、类似上面的,在线程的OnTerminate事件中将线程数量减一,要注意对该变量的并
  发控制。
二、主线程中使用WaitForMultipleObjects来等待一批线程的执行。
  或者使用信号灯来控制。
 
线程数组我是设置freeonterminate=true来自动释放的,我在任务管理器中,看到我的程序使用内存一直在增加,不知道是否是线程释放干净了,不知道大家是怎么处理这个问题的???
 
解决了 ,散分!!!
 

Similar threads

S
回复
0
查看
3K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
2K
SUNSTONE的Delphi笔记
S
I
回复
0
查看
979
import
I
I
回复
0
查看
571
import
I
后退
顶部