根据如何可靠地判断 boost 线程是否已退出其运行方法?,幸运的是,您可以加入已完成的线程并避免如果您必须仅在运行时有条件地加入线程时出现的竞争条件。
但是呢thread::interrupt()
?线程退出后可以调用吗?
根据如何可靠地判断 boost 线程是否已退出其运行方法?,幸运的是,您可以加入已完成的线程并避免如果您必须仅在运行时有条件地加入线程时出现的竞争条件。
但是呢thread::interrupt()
?线程退出后可以调用吗?
是的,调用这个方法是安全的。
从文档中:
如果 *this 指的是一个正在执行的线程,则请求该线程下一次进入启用中断的预定义中断点之一时将被中断,或者如果它当前在调用具有中断的预定义中断点之一时被阻塞启用。
当boost::thread
对象 ( *this
) 不是“执行线程”时,即没有运行,调用此方法不会执行任何操作。