Windows平台的线程——创建和退出

Windows平台的线程  ---- 线程的创建和退出

创建线程的Win32API函数是CreateThread和CreateRemoteThread。前者创建的线程运行于当前的进程空间,而后者用于创建运行于其他进程空间中的线程。

线程创建后都回返回一个线程句柄,同时也可以在输出参数钟返回一个线程的编号。

通过线程句柄,我们可以对先做进行暂停、恢复等操作。和其他系统句柄一样,线程句柄也可以被当前进程的子进程所继承,使得当前进程的子进程也可以操作该线程。当然,如需要使线程句柄能被子进程所继承,还是有很多额外的手续要办的。

线程编号在系统中是唯一的,这个编号的有效期和线程的执行期对应,线程退出后,这个编号也就失效了。我们可以使用GetCurrentThreadId函数取得当前线程的编号,但系统没有提供根据线程编号获取线程句柄的方法,这是为了防止其他进程使用这种方法获取某一进程中的线程句柄后,胡乱对其进行操作而导致执行错误。

退出一个线程有很多方法,如,该线程在运行中调用了ExitThread函数,或者ExitProcess函数被调用使得整个进程退出,或者线程如阔函数返回退出,或者其他线程调用了TerminateThread或者TerminateProcess函数。线程退出后会有一个返回值,其他线程可以使用GetExitCodeThread函数获取退出线程的返回值。微软官方建议,尽量少用TerminateThread和TerminateProcess函数,这两个函数对程序的运行会带来无法预料的结果,比如线程因为受到这两个函数的强制退出,其所分配的资源无法正常释放等等。一般而言,通知线程退出的方法可以使用系统事件。

一个线程虽然退出执行,但此时它并没有从系统中完全释放。要完全释放线程,我们在线程退出运行后,还需要执行下一步,就是使用CloseHandle函数关闭这个线程的句柄。

 

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值