线程中有一函数需要1~20秒返回
我需要线程在3秒内结束
设计思想是:
创建一个线程来创建子工作线程;
用一个Timer来计时,每个子工作线程一个计时器,大于2时强制结束子工作线程现在程序创建的前2000多个子工作线程可以正常创建、工作和结束
但是2000多个以后就不能创建子工作线程了为什么?
如何解决?
我需要线程在3秒内结束
设计思想是:
创建一个线程来创建子工作线程;
用一个Timer来计时,每个子工作线程一个计时器,大于2时强制结束子工作线程现在程序创建的前2000多个子工作线程可以正常创建、工作和结束
但是2000多个以后就不能创建子工作线程了为什么?
如何解决?
CloseHandle(h);//创建完就关闭这个句柄,则线程结束后就没有泄漏了。
为什么非要创建、工作、结束这么多线程呢?是否可以考虑改成单个工作线程?楼上的CloseHandle应该是问题的症结所在。
HANDLE h = CreateThread(....);
CloseHandle(h);//创建完就关闭这个句柄,则线程结束后就没有泄漏了。
——————————————————————————————————
那我TerminateThread线程时用什么句柄啊?
进程里有500~600个线程
而事实上,最多可能有250个,多出来的是没有杀掉的
线程终结时,使用计数减一。
这么说我调用CloseHandle还可以用这个句柄来TerminateThread呀
但是杀不掉啊
如果在TerminateThread之后调用CloseHandle
但是这个句柄已经不能用了
与临界段的处理一样么?如果建立的线程可以被强制结束的话,就不必执着于句柄了吧!
>如果建立的线程可以被强制结束的话,就不必执着于句柄了吧!强制结束线程后,线程的资源怎么回收啊?
这个是主要的问题!
TerminateThread后线程的资源是不会释放的。建议你让线程自己返回。
CloseHandle()后,句柄当然没用了。