在 C++ 中實現異步回調函數通常需要使用多線程、事件循環或者異步庫(如 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() {
// 創建一個回調函數
auto my_callback = []() {
std::cout << "異步任務完成!" << std::endl;
};
// 調用異步回調函數
async_callback(my_callback);
// 主線程等待一段時間,以便觀察回調函數的執行
std::this_thread::sleep_for(std::chrono::seconds(3));
std::cout << "主線程結束。" << std::endl;
return 0;
}
在這個例子中,我們創建了一個名為 async_callback
的函數,它接受一個 std::function<void()>
類型的回調函數作為參數。我們在 async_callback
中模擬了一個異步操作(使用 std::this_thread::sleep_for
函數暫停一秒鐘),然后在異步操作完成后調用回調函數。
在主函數中,我們定義了一個 lambda 表達式作為回調函數,并將其傳遞給 async_callback
函數。主線程等待一段時間后結束,以便我們可以觀察到回調函數的執行。