您的位置:首页 > 其它

如何正确的创建线程,终了线程(1)

2013-09-30 22:49 211 查看
最近公司很老的一个制品出现了memoryleak,现在搞的人头很大

,查的过程中积累点东西和大家分享一下~


1>如何正确的创建线程?
 
Win32中创建线程函数对比。       
 
函数
提供者
适用范围
__beginthread()
C/C++提供C/C++程序
__beginthreadex()
C/C++提供
C/C++程序
CreateThread()
Windows提供
Windows程序
※1)对于C/C++程序调用CreateThread()会有内存泄露,推荐使用__beginthreadex。
  2)线程创建失败时,__beginthread()和__beginthreadex()的返回值不同。__beginthread()是-1,__beginthreadex()是0。
  3)线程退出时,__beginthread()会调用__endthread(),此函数会释放线程的_tidata块,然后调用ExitThread()后,最后CloseHandle()。而__begintheadex()会调用__endtheadex().此函数同__endthread不同之处,只是不会关闭线程句柄。
  4)如果调用__beginthread()来创建线程,后面代码是不能涉及关于此线程句柄的处理。
比如:用WaitForSingleObject函数来判断__beginthread()创建的线程终了,是不可取的。
详细请参考《Windows核心编程》
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: