【发布时间】:2009-04-22 14:54:10
【问题描述】:
我创建了一个 boost 线程,使用: boost::thread thrd(&connectionThread);其中 connectionThread 是一个简单的 void 函数。但是,当我尝试让它等待几秒钟时,这很好用,例如使用:
boost::xtime xt;
boost::xtime_get(&xt, boost::TIME_UTC);
xt.sec += 1;
boost::thread::sleep(xt); // Sleep for 1 second
程序在 xtime_get 行崩溃。即使手动尝试设置 xt.sec 它也不起作用。我尝试了其他几种方法,但我似乎无法使其工作。有什么我做错了吗?有没有更简单的方法来实现我的目标?
【问题讨论】:
-
需要更多信息 - 这会在 xtime_get 行崩溃?如果是这样,当您手动设置 xt 时它是如何崩溃的(或者它只是没有按照您的意愿行事)?
-
在尝试手动设置 xt.sec 时以何种方式不起作用? xt.sec = 1 可能是一个非常短的时间,因为我认为 sec 至少以毫秒为单位。如果是这样,你会睡一毫秒。
-
boost.org/doc/libs/1_38_0/doc/html/thread/… 看起来最新版本的库现在使用来自 boost::date_time 的组件来指定持续时间。
-
希望你不要像我一样忘记包含头文件
标签: c++ multithreading boost