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

最近公司很老的一个制品出现了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核心编程》

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值