在Asio C++中实现定时任务可以使用asio::steady_timer
类。asio::steady_timer
类提供了在指定时间间隔后执行回调函数的功能。
下面是一个简单的示例代码,演示了如何使用asio::steady_timer
实现定时任务:
#include <iostream>
#include <asio.hpp>
void print(const asio::error_code& /*e*/,
asio::steady_timer* timer)
{
std::cout << "Hello, world!" << std::endl;
// 设置下一个定时任务,在1秒后执行
timer->expires_after(std::chrono::seconds(1));
// 重新启动定时器
timer->async_wait(std::bind(print,
std::placeholders::_1,
timer));
}
int main()
{
asio::io_context io;
asio::steady_timer timer(io, std::chrono::seconds(1));
timer.async_wait(std::bind(print, std::placeholders::_1, &timer));
// 开始事件循环
io.run();
return 0;
}
在上面的代码中,我们首先定义了一个print
函数,该函数用于打印"Hello, world!"消息并设置下一个定时任务。然后在main
函数中创建了一个asio::io_context
对象和一个asio::steady_timer
对象,设置定时任务的时间间隔为1秒,并启动事件循环。
运行上面的代码,您将看到每隔1秒输出一次"Hello, world!"消息。您可以根据自己的需求修改定时任务的时间间隔和回调函数的实现。