繁体   English   中英

如何睡眠C ++ Boost线程

[英]How to sleep a C++ Boost Thread

似乎无法使用boost :: thread睡眠线程。 方法sleep需要system_time但是如何构建它?

查看内部库并没有多大帮助......

基本上我在函数中有一个线程,我作为入口点传递给这个线程,我想调用类似的东西

 boost::this_thread::sleep

什么的,怎么做?

谢谢

根据您的Boost版本:

要么...

#include <boost/chrono.hpp>
#include <boost/thread/thread.hpp> 

boost::this_thread::sleep_for(boost::chrono::milliseconds(100));

要么...

#include <boost/date_time/posix_time/posix_time.hpp>
#include <boost/thread/thread.hpp> 

boost::this_thread::sleep(boost::posix_time::milliseconds(100));

你也可以使用微秒,秒,分钟,小时和其他一些,我不确定。

在另一篇文章中,我了解了对于Boost v1.5.3不推荐的boost::this_thread::sleephttp//www.boost.org/doc/libs/1_53_0/doc/html/thread/thread_management.html

相反,试试吧

void sleep_for(const chrono::duration<Rep, Period>& rel_time);

例如

boost::this_thread::sleep_for(boost::chrono::seconds(60));

或者也许试试吧

void sleep_until(const chrono::time_point<Clock, Duration>& abs_time);

我使用Boost v1.53和不推荐的sleep功能,并且不定期地破坏了程序。 当我改变对sleep函数的调用以调用sleep_for函数时,程序停止了崩溃。

首先

boost::posix_time::seconds secTime(1);  
boost::this_thread::sleep(secTime); 

其次

boost::this_thread::sleep(boost::posix_time::milliseconds(100));

我学到了很难,至少在MS Visual Studio(试过2013年和2015年)之间存在着巨大的差异

boost::this_thread::sleep(boost::posix_time::microseconds(SmallIterval));

boost::this_thread::sleep_for(boost::chrono::microseconds(SmallIterval));
or
std::this_thread::sleep_for(std::chrono::microseconds(SmallIterval));

当间隔小于一些相当大的阈值时(我看到15000微秒的阈值= 15毫秒)。

如果SmallIterval很小,sleep()会立即中断。 睡眠(100 mks)表现为睡眠(0 mks)。

但是,对于小于阈值的时间间隔,sleep_for()会暂停整个阈值。 sleep_for(100 mks)表现为sleep_for(15000 mks)。

间隔大于阈值和值0的行为是相同的。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM