此处先等30s,再调用函数ManagerTaskCore
类的定义:
#include#include #include
#include #include #include #include class TaskManager { public: TaskManager(){} void ManagerTask(); void ManagerTaskCore(); private: boost::asio::io_service m_io_ctx; };
类的实现:
#include "task_manager.hpp"
void TaskManager::ManagerTask()
{
boost::asio::steady_timer asio_steady_timer(m_io_ctx);//此处使用stead_timer,不受系统时间影响
asio_steady_timer.expires_from_now(std::chrono::seconds(30));//后跟std::chrono
asio_steady_timer.async_wait([this](const boost::system::error_code& e){
if(e)
std::cerr << "err:" << e.message() << std::endl;
ManagerTaskCore();//使用lambda表达式将ManagerTaskCore作为回调函数,异步类中函数需要传this指针,否则无法找到
});
m_io_ctx.run();
}
void TaskManager::ManagerTaskCore()
{
//...函数操作
ManagerTask();//每30秒循环调用,与上面配合
}



