如何使io_service每200秒发布一次特定功能

how to make io_service post specific function every 200 seconds?

本文关键字:布一次 功能 200秒 何使 io service      更新时间:2023-10-16

我想做一些操作,比如每200秒检查一次。如何使io_service变量每200秒发布一次此操作函数?boost中有库函数吗?

在未来使用一个到期时间为200秒的deadline_timer,当async_wait处理程序触发时,您可以调用任何您想要的函数

#include <boost/asio.hpp>
#include <iostream>
class Timer {
public:
    explicit Timer(boost::asio::io_service& io_service) :
        _timer( io_service )
    {
        this->wait();
    }
private:
    void wait()
    {
        _timer.expires_from_now(boost::posix_time::seconds(5));
        _timer.async_wait([&](const boost::system::error_code& error) {
            if (error) {
                std::cerr << "Could not wait: " << error << std::endl;
                return;
            }
            std::cout << "Done waiting!" << std::endl;
            this->wait();
        });
    }
private:
    boost::asio::deadline_timer _timer;
};
int
main()
{
    boost::asio::io_service io_service;
    Timer t{io_service};
    io_service.run();
}
相关文章: