【发布时间】:2015-01-29 00:30:58
【问题描述】:
我执行一个简单的例子作为测试,我想在 5 秒后执行一个简单的操作。我正在使用带有 async_wait 的 boost::deadline_timer,但 async_wait 不是异步等待...这是代码:
void print(const boost::system::error_code& /*e*/)
{
std::cout << "Second Message\n";
}
int main()
{
boost::asio::io_service io;
boost::asio::deadline_timer t(io, boost::posix_time::seconds(5));
t.async_wait(print);
io.run();
std::cout << "First Message\n";
return 0;
}
这是输出:
Second Message
First Message
有一个错误,因为计时器必须在后台等待,因此要继续执行下一条指令“cout
预期的行为是打印“第一条消息”,然后打印“第二条消息”
谢谢,我是这样解决的:
boost::asio::io_service io;
boost::asio::deadline_timer t(io, boost::posix_time::seconds(5));
t.async_wait(print);
std::thread thread([&]{io.run();});
【问题讨论】:
-
关于“谢谢,我是这样解决的”补充:How does accepting an answer work
标签: c++ asynchronous boost