c++ - 如何每 200 秒使 io_service 发布特定功能?

标签 c++ boost boost-asio

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

最佳答案

使用一个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();
}

关于c++ - 如何每 200 秒使 io_service 发布特定功能?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26355280/

相关文章:

c++ - 如何用总和得到正产品的负因素

c++ - 动态加载共享库时出现 undefined symbol 错误

c++ - 如何为 3D vector 中未使用的元素释放内存?

c++ - 在基类中重载赋值运算符

c++ - boost::算法::包含

c++ - boost.asio 和 pfring 冲突

c++ - boost::asio::ip::tcp::socket 中的 async_read_some() 是如何工作的?

c++ - boost::asio 多线程异步接受阻塞读/写服务器

C++ OGRE3D VS2013 : Error LNK2038: mismatch detected for '_MSC_VER' : value '1700' doesn't match value '1800'

c++ - 使用boost线程库抛出的异常