C++ 如果在加入线程后N秒内未完成,如何终止线程?
我使用这样的模式:C++ 如果在加入线程后N秒内未完成,如何终止线程?,c++,multithreading,C++,Multithreading,我使用这样的模式: boost::thread receiverThread; .... stayConnected = false; if (receiverThread.joinable()) { receiverThread.join(); } receiverThread线程定期检查stayConnected标志,当它设置为false时,它应该终止 现在我想保护主代码不受“坏的”receiverThread,如果receiverThread在5秒后没有完成,我想杀死它: boo
boost::thread receiverThread;
....
stayConnected = false;
if (receiverThread.joinable()) {
receiverThread.join();
}
receiverThread
线程定期检查stayConnected
标志,当它设置为false
时,它应该终止
现在我想保护主代码不受“坏的”receiverThread
,如果receiverThread
在5秒后没有完成,我想杀死它:
boost::thread receiverThread;
....
stayConnected = false;
if (receiverThread.joinable()) {
receiverThread.join();
// not to hang forever, if receiverThread not finished after 5 seconds, kill it
}
执行此操作的最佳方法是什么?Boost不提供任何线程: 9为什么不提供线程取消或终止? 线程终止是有必要的,所以在某个时候,
Boost.thread
可能会包含它,但只有在我们找到一种真正安全(且可移植)的机制来实现这个概念之后
但是,最好在一些安全点检查
stayConnected
。如果你在这两个点之间需要花很多时间,试着在这两个点之间找到一个新的安全点。谢谢,我想我可能会使用try\u join\u for
,我正在寻找一个例子。