我用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)
使用该代码(例如,不知道将其放在哪里),我只能说该xtime_get方法返回返回的度量的类型。也就是说,您必须确保以下断言成立:
int res = boost::xtime_get(&xt, boost::TIME_UTC);
assert(res == boost::TIME_UTC);
Run Code Online (Sandbox Code Playgroud)
在您的系统中,情况可能并非如此。
然而,再次查看代码,我想到崩溃可能与此调用无关,而是与您在应用程序中执行的其他操作有关。同样,这取决于您在何处使用此代码。它在operator()你的线程内吗?
| 归档时间: |
|
| 查看次数: |
18848 次 |
| 最近记录: |