在 C++ 中實現(xiàn)異步回調(diào)函數(shù)通常需要使用多線程、事件循環(huán)或者異步庫(如 Boost.Asio)。這里給出一個簡單的基于 C++11 標準庫和 std::function 的例子:
#include <iostream>
#include <functional>
#include <thread>
#include <future>
#include <chrono>
void async_callback(const std::function<void()> &callback) {
// 模擬異步操作
std::this_thread::sleep_for(std::chrono::seconds(1));
callback();
}
int main() {
// 創(chuàng)建一個回調(diào)函數(shù)
auto my_callback = []() {
std::cout << "異步任務(wù)完成!" << std::endl;
};
// 調(diào)用異步回調(diào)函數(shù)
async_callback(my_callback);
// 主線程等待一段時間,以便觀察回調(diào)函數(shù)的執(zhí)行
std::this_thread::sleep_for(std::chrono::seconds(3));
std::cout << "主線程結(jié)束。" << std::endl;
return 0;
}
在這個例子中,我們創(chuàng)建了一個名為 async_callback
的函數(shù),它接受一個 std::function<void()>
類型的回調(diào)函數(shù)作為參數(shù)。我們在 async_callback
中模擬了一個異步操作(使用 std::this_thread::sleep_for
函數(shù)暫停一秒鐘),然后在異步操作完成后調(diào)用回調(diào)函數(shù)。
在主函數(shù)中,我們定義了一個 lambda 表達式作為回調(diào)函數(shù),并將其傳遞給 async_callback
函數(shù)。主線程等待一段時間后結(jié)束,以便我們可以觀察到回調(diào)函數(shù)的執(zhí)行。