C++让一个提升线程等待1秒钟

8 c++ multithreading boost

我用boost :: thread thrd(&connectionThread)创建了一个boost线程; connectionThread是一个简单的void函数.但是,当我尝试让它等待几秒钟时,这很好用,例如使用:

boost::xtime xt;

boost::xtime_get(&xt, boost::TIME_UTC);

xt.sec += 1;

boost::thread::sleep(xt); // Sleep for 1 second
Run Code Online (Sandbox Code Playgroud)

程序在xtime_get行崩溃.即使手动尝试设置xt.sec它也不起作用.我已经尝试了其他几种方法,但我似乎无法使其工作.有什么我做错了吗?有没有更简单的方法来实现我的目标?

Ano*_*ous 26

有没有更简单的方法

也许是这些方面的东西:

boost::this_thread::sleep(boost::posix_time::seconds(1));
Run Code Online (Sandbox Code Playgroud)

boost::thread::sleep(boost::posix_time::seconds(1));
Run Code Online (Sandbox Code Playgroud)


Die*_*lla 0

使用该代码(例如,不知道将其放在哪里),我只能说该xtime_get方法返回返回的度量的类型。也就是说,您必须确保以下断言成立:

int res = boost::xtime_get(&xt, boost::TIME_UTC);
assert(res == boost::TIME_UTC);
Run Code Online (Sandbox Code Playgroud)

在您的系统中,情况可能并非如此。

然而,再次查看代码,我想到崩溃可能与此调用无关,而是与您在应用程序中执行的其他操作有关。同样,这取决于您在何处使用此代码。它在operator()你的线程内吗?