在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!"消息。您可以根據自己的需求修改定時任務的時間間隔和回調函數的實現。