gpt4 book ai didi

c++ - boost 计时器立即到期

转载 作者:行者123 更新时间:2023-11-30 03:51:57 27 4
gpt4 key购买 nike

我运行 boost deadline_timer 并执行 async_wait,但计时器立即取消。我做错了什么?我在主文件中运行 ioService。

谢谢你的帮助

class A(boost::asio:io_service& ioService):
m_timer(ioService)
{
m_timer.expires_at(boost::posix_time::pos_infin);
m_timer.async_wait([this](const boost::system::error_code& ec)
{
std::cout << "Timer callback " << ec.message() << std::endl;
});

最佳答案

检查 A 对象的生命周期。

例如如果你这样做:

#include <boost/asio.hpp>
#include <iostream>

struct A {
A(boost::asio::io_service& ioService) : m_timer(ioService)
{
m_timer.expires_at(boost::posix_time::pos_infin);
m_timer.async_wait(
[this](const boost::system::error_code& ec) { std::cout << "Timer callback " << ec.message() << std::endl; }
);
}
boost::asio::deadline_timer m_timer;
};

int main()
{
boost::asio::io_service svc;
{
A a(svc);
}
svc.run();
}

即使在 run() 被调用之前,计时器也会被取消。

下面会做你所期望的

int main()
{
boost::asio::io_service svc;
{
A a(svc);
svc.run();
} // A destructed after `run()` completes
}

关于c++ - boost 计时器立即到期,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30979053/

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