在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++中实现异步操作并在操作完成后执行回调函数。