在C++中,實現異步回調通常會使用多線程或者異步任務庫來實現。以下是一種簡單的實現方式:
std::async
和std::future
:std::async
函數可以在新的線程中異步執行一個函數,并返回一個std::future
對象,用于獲取函數執行的結果。可以在主線程中繼續執行其他操作,然后通過std::future
對象獲取函數執行的結果。#include <iostream>
#include <future>
void asyncFunction(std::promise<int>& prom) {
// 模擬異步操作
std::this_thread::sleep_for(std::chrono::seconds(2));
int result = 42;
prom.set_value(result);
}
int main() {
std::promise<int> prom;
std::future<int> fut = prom.get_future();
std::async(std::launch::async, asyncFunction, std::ref(prom));
// 繼續執行其他操作
std::cout << "Doing something else..." << std::endl;
// 獲取異步操作的結果
int result = fut.get();
std::cout << "Async function result: " << result << std::endl;
return 0;
}
#include <iostream>
#include <chrono>
#include <functional>
void asyncFunction(std::function<void(int)> callback) {
// 模擬異步操作
std::this_thread::sleep_for(std::chrono::seconds(2));
int result = 42;
callback(result);
}
void callbackFunction(int result) {
std::cout << "Async function result: " << result << std::endl;
}
int main() {
asyncFunction(callbackFunction);
// 繼續執行其他操作
std::cout << "Doing something else..." << std::endl;
return 0;
}
這些方法可以幫助實現異步回調,在C++中實現異步操作并在操作完成后執行回調函數。