怎样在程序运行期控制线程数的增减呢?(100分)

  • 主题发起人 主题发起人 小天
  • 开始时间 开始时间

小天

Unregistered / Unconfirmed
GUEST, unregistred user!
有许多程序可以在运行时控制线程数的多少,如ProxyHunter等,
可以由用户决定同时运行多少个线程,请问这是如何实现的呢?
 
在循环中,CreateThread(Self);
 
一个简单的方法是给线程传递参数比如一个数组,线程启动时值真,退出时为假
 
定义好自己的线程类后,如:
TMythread=CLASS(THread)
private
.....
ip_address:string;
execute;override;
public
constructor create(ip:string);override;
end;
.....
mythread:TMythread;
......
constructor TMythread.create(ip:string);
begin
ip_address:=ip;
inherited create(false);
end;
.......
ip:='xxx.xxx.xxx.xxx'
mythread:=TMythread.create(ip);

这样,就将该ip地址的值传给了线程,在线程的执行函数中可以定义各种各样
的操作,如果想创建新的线程,只要定义另外的TMythread线程类变量,在
创建线程的时候传入不同的ip地址就可以了。
 
a example
TThreadMgr=class
protected
miTThreadTtlCount : integer // all the count that Threads permitered
miCurrentThreadCnt: integer // current count that threads runing
marrThread : array of TThread
public
procedure mGetLeftThreadCount(var iLeftCount: integer )
function mRunAThread( desThread : TThread paras : array of string ) : boolean
//return true miCurrentThreadCnt Increased and the desThread is running else
//nothing will do
end

it is ok?
 
多人接受答案了。
 
后退
顶部