请教用多线程进行扫描,该怎么写?(急用!)3thx(100分)

J

jhonguy

Unregistered / Unconfirmed
GUEST, unregistred user!
比例开50个线程扫描多余50个地址,
在一个线程结束后开启新的线程,直到地址扫描完成,该怎么安排好线程呢?
 
同时开太多的线程的性能不会好,一般一次开3到5个,
参考一下这个程序的代码:
http://service.lonetear.com/delphi/dispdoc.asp?id=893
比较符合你的要求。
 
啊,弄懂了,他是这么实现的,我还以为必须通过信号量或waitformulitiobject(忘了怎么写了^_^)
来等待线程句柄
for ip:=IPStart to IPEnddo
begin
if TrIPAborted then
break;
//Only fire a new thread when allowed..
while ThreadCount>=MaxThreadsdo
begin
application.processmessages;
if TrIPAborted then
begin
KillThreads;
break;
end;
end;
ThreadOptions:=ord(cbPing.Checked)+(ord(cbResolve.checked)*2)+(ord(cbTrace.checked)*4)+(ord(cbResolveTrace.checked)*8);
if TrIPAborted then
break;
//NB ip is in Hostbyte Order..swap to Network Order!!
inc(ThreadCount);
TThrIPScan.Create(winsock.htonl(ip),ThreadOptions,tbPackets.Position,tbHops.Position);
end;
 
这个程序收益非浅!3thx,给分了
 
顶部