似乎不可能睡觉使用boost :: thread的线程。 方法睡眠需要system_time,但我该如何构建它?如何睡觉一个C++ Boost线程
寻找内库并不能真正帮助很大......
基本上我有我传递给这个线程作为入口点函数中的一个线程 ,我想打电话给像
boost::this_thread::sleep
什么的,该怎么做?
谢谢
似乎不可能睡觉使用boost :: thread的线程。 方法睡眠需要system_time,但我该如何构建它?如何睡觉一个C++ Boost线程
寻找内库并不能真正帮助很大......
基本上我有我传递给这个线程作为入口点函数中的一个线程 ,我想打电话给像
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::posix_time::seconds secTime(1);
boost::this_thread::sleep(secTime);
其次
boost::this_thread::sleep(boost::posix_time::milliseconds(100));
从另一篇文章,我学到boost::this_thread::sleep
已经废弃了升压V1.5.3:http://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);
我使用升压V1.53与过时sleep
功能,并不定期地崩溃的程序。当我将sleep
函数的调用更改为调用sleep_for
函数时,程序停止崩溃。
我学到了艰辛的道路,至少在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的行为是相同的。
是的,谢谢你...我没有注意使用this_thread,但只是提升::线程和没有工作:) Thansk – Andry 2010-11-24 13:37:47
这给了我以下错误(使用Xcode 5/LLVM):错误:没有可行的转换从'boost :: posix_time :: microseconds'(又名'subsecond_duration')到'const system_time'(又名'const boost :: posix_time :: ptime') –
2014-01-31 11:38:15