在 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
函数。主线程等待一段时间后结束,以便我们可以观察到回调函数的执行。