只要约定在事件等待或者 IO 等待的时候允许中断就行了。Java 的线程已经接近完美,所有 Lock 的 acquire() 都可能抛出 InterruptedException,可惜 IO 事件没有。
C++ 如果遵循 RAII,保证抛出异常的时候能够销毁资源,也可以这么干。不过对于在阻塞和 IO 的时候,需要包装一下相关的 API,退出后检测线程状态并抛出异常。
【 在 KillnCov (KillnCov) 的大作中提到: 】
: 从设计看上,从外部中断线程并不是好的设计。正确的做法是应该告诉线程,你可以退出了,然后线程做好资源清理等收尾工作后自己退出。
: 所以问题就是如何通知线程可以退出了,这个方法就很多了。最简单的全局变量,条件变量等等
: --来自微水木3.5.11
: ...................
--
修改:hgoldfish FROM 47.243.39.*
FROM 140.224.35.*