gpt4 book ai didi

c++ - boost::deadline_timer::async_wait 不是异步的

转载 作者:搜寻专家 更新时间:2023-10-31 01:01:56 28 4
gpt4 key购买 nike

我执行一个简单的例子作为测试,我想在 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<<"FirstMessage\n";”

预期的行为是打印“第一条消息”,然后打印“第二条消息”


谢谢,我是这样解决的:

    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();});

最佳答案

io.run() 仅在其所有作业完成后退出。尝试安排两个具有不同超时的 deadline_times,看看会发生什么。 (或者将 io.run() 放入另一个线程。)

关于c++ - boost::deadline_timer::async_wait 不是异步的,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28205052/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com