Win32线程——在某个线程内终止另一个正在运行的线程(1)

《Win32多线程程序设计》–Jim Beveridge & Robert Wiener

  1. 对于多线程程序,如果用户企图结束程序(主线程)时,子线程尚未完成工作,怎么办?
  2. 结束一个线程,听起来好容易,但是结束程序必须按次序进行,以避免发生 race conditions。让程序依次序进行是非常重要的,特别是在程序要结束之前。结束一个程序就好像拆除一栋建筑物一样,在你以推土机轧平它之前,你必须确定每一个人都安全离开了屋子。结束一个程序也是这样,每一个线程都被迫结束,不管它进行到哪里。
做法一:在任何子线程还没完成其工作之前,不准用户结束程序(可能需要长时间等待)

缺点:对于GUI程序,可能需要很长的时间等待程序退出,那么程序有可能看起来像是“挂”了一样。

做法二:TerminateThread() 放弃一个线程(微软不建议使用)

缺点:
TerminateThread() 强迫其行动目标(一个线程)结束,手段激烈而有力,甚至不允许该线程有任何“挣扎”的机会。
此函数唯一可以预期并依恃的是:线程 handle 将变成激发状态,并且传回dwExitCod

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值