nRecv = ::recv(sktclt, buffS, 8096, 0);
if(nRecv > 0)
{
CreateThread(..BB...)................
}
线程函数:BB
{
 。。
ExitThread(0); 
return ;
}当接收到数据后,我就创建一个线程来处理,当线程执行完后,执行ExitThread(0); 自动释放资源,为什么,当CreateThread上千个时,内存剧增,为什么不能达到自动释放,高人请指点,俺是新手,最好能举个例呀,谢谢

解决方案 »

  1.   

    线程执行完
    自动回释放线程相关的资源
    应该是你在线程中创建的其他的资源没有释放
    TCP通信代码可参看
    http://blog.csdn.net/wangyao1052/article/details/8110405
      

  2.   

    CreateThread 返回一个HANDLE的,你要接收这个HANDLE,调用下CloseHandle才行,线程的计数器才会减到0,TCB才会被释放掉。这个跟CreateProcess一样,CreateThread一个线程的时候计数器=1,再把HANDLE返回的时候计数器又加了1,如果不把计数器减到0,无法释放内存。
      

  3.   

    CreateThread是会有内存增加的,特别是你创建上千个的时候。最好用_beginthreadex来创建线程。
    另外,应该将线程句柄保存起来,最后不要忘了CloseHandle.
    程序员不要总是想着让系统自动释放资源,有些资源需要你手工来释放