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