C++ 如何中断boost::c++;
在我的应用程序中,我给出了10秒的睡眠时间。我使用boost::this_thread::sleep函数提供了sleep。C++ 如何中断boost::c++;,c++,boost-thread,C++,Boost Thread,在我的应用程序中,我给出了10秒的睡眠时间。我使用boost::this_thread::sleep函数提供了sleep。 是否有任何可能的方法中断boost::this_thread::sleep函数?您可以使用interrupt()中断sleep函数 你必须为你的线程启用中断,当它休眠时,你可以使用中断功能 Boost在线上有一个关于这方面的很好的简短教程,请看这里:来自: 抛出: boost::thread\u中断如果当前执行线程中断 注意事项: sleep()是预定义的方法之一 因此,您
是否有任何可能的方法中断boost::this_thread::sleep函数?您可以使用
interrupt()
中断sleep
函数
你必须为你的线程启用中断,当它休眠时,你可以使用中断功能
Boost在线上有一个关于这方面的很好的简短教程,请看这里:来自:
抛出:
boost::thread\u中断
如果当前执行线程中断
注意事项:
sleep()
是预定义的方法之一
因此,您需要在线程中执行的是将sleep()
调用放入try catch
,然后catchboost::thread\u中断
。然后调用线程对象来中断睡眠
顺便说一句,也可以从: 警告 自3.0.0以来已弃用 使用和代替 我使用boost::this_thread::sleep函数提供了sleep。有没有可能中断boost::this_thread::sleep函数 不是这样的,但是实现它并不困难,就
boost::this\u thread::sleep
:
void sleep_for(boost::posix_time::milliseconds interval, std::atomic<bool>& interrupted)
{
static const auto resolution = boost::posix_time::milliseconds(10));
ptime end_time(microsec_clock::local_time()) + interval;
while( !interrupted.load() )
{
boost::this_thread::sleep(resolution);
if(microsec_clock::local_time() > end_time)
break;
}
}
@WouterHuysentruit,你的回答是否有趣?嘿@Joachim Pileborg我正在使用“boost::this_thread”中的睡眠函数,它没有中断API,我的要求是使用“boost::this_thread”,所以有没有办法中断睡眠。@user3721279
boost::this_thread::sleep
正如我在回答中引用的链接所述,中断点。请阅读我的答案中提供的链接。
std::atomic<bool>& interrupt = false;
void f() {
sleep_for(boost::posix_time::milliseconds(200), interrupt);
}
interrupt.store(true); /// will cause thread 1 to be interrupted, if called
/// during execution of sleep_for.