CreateThread创建线程问题
nRecv = ::recv(sktclt, buffS, 8096, 0);
if(nRecv > 0)
{
CreateThread(..BB...)................
}
线程函数:BB
{
。。。。。。。。。。。。。。
ExitThread(0);
return ;
}
当接收到数据后,我就创建一个线程来处理,当线程执行完后,执行ExitThread(0); 自动释放资源,为什么,当CreateThread上千个时,内存剧增,为什么不能达到自动释放,高人请指点,俺是新手,最好能举个例呀,谢谢
[最优解释]
线程执行完
自动回释放线程相关的资源
应该是你在线程中创建的其他的资源没有释放
TCP通信代码可参看
http://blog.csdn.net/wangyao1052/article/details/8110405
[其他解释]
CreateThread是会有内存增加的,特别是你创建上千个的时候。最好用_beginthreadex来创建线程。
另外,应该将线程句柄保存起来,最后不要忘了CloseHandle.
程序员不要总是想着让系统自动释放资源,有些资源需要你手工来释放
[其他解释]
上千个线程?你调度的动吗?设计有问题,你应该写一个线程池来完成。
[其他解释]
CreateThread 返回一个HANDLE的,你要接收这个HANDLE,调用下CloseHandle才行,线程的计数器才会减到0,TCB才会被释放掉。这个跟CreateProcess一样,CreateThread一个线程的时候计数器=1,再把HANDLE返回的时候计数器又加了1,如果不把计数器减到0,无法释放内存。