使用Tthread线程类时如何控制线程数量?
使用多线程时我现在都用 TThread线程类了
但是如何控制线程数量方面还有点疑问请教
TSearchThread = class(TThread)
//
end;
目前我的作法就是定制一个全局变量
var
I_ThreadCount: Integer; //线程数量
然后
//------- 线程类创建时
constructor TMyThread.Create()
begin
inherited Create(False);
InterlockedIncrement(I_ThreadCount); //线程计数+1
end;
//------- 线程类销毁时
destructor TMyThread.Destroy;
begin
InterlockedDecrement(I_ThreadCount); //线程计数-1
end;
这样来创建线程任务
with TMyThread.Create(S_Kw, S_WebFiletype) do
begin
end;
然后创建后循环判断这个线程数量 I_ThreadCount
超过数量就一直循环SLEEP
// 判断线程 来限制同时运行线程数量
while I_ThreadCount >= 9 do //限制线程数
begin
Application.ProcessMessages;
Sleep(10);
end;
百度了很多 都没看到是线程类是怎么控制线程数量的(线程池不会用)
我这个目前来看效果还行,就是感觉不是正道,
不知道大家是怎么控制线程数量的?
特此请教