在C++中,通常使用第三方庫來實現異步操作等待功能,例如使用Boost庫或者使用C++20標準中的協程(coroutine)來實現。
如果使用Boost庫,可以使用boost::asio::io_context類和boost::asio::async_wait函數來實現異步操作等待。例如:
#include <iostream>
#include <boost/asio.hpp>
#include <boost/asio/steady_timer.hpp>
int main() {
boost::asio::io_context io_context;
boost::asio::steady_timer timer(io_context, boost::asio::chrono::seconds(1));
timer.async_wait([](const boost::system::error_code& ec) {
if (!ec) {
std::cout << "Timer expired!" << std::endl;
}
});
io_context.run();
return 0;
}
如果使用C++20中的協程,可以使用co_await關鍵字來實現異步操作等待。例如:
#include <iostream>
#include <experimental/coroutine>
std::experimental::coroutine_handle<> coro;
void async_operation() {
std::cout << "Start async operation" << std::endl;
coro = std::experimental::coroutine_handle<>::from_address(std::experimental::coroutine_handle<>::from_address(nullptr));
co_await std::experimental::suspend_always{};
std::cout << "Async operation finished" << std::endl;
}
int main() {
async_operation();
coro.resume();
return 0;
}
這樣就可以通過Boost庫或者C++20中的協程來實現異步操作等待功能。