如何在c++中实现异步回调函数

avatar
作者
筋斗云
阅读量:0

在 C++ 中实现异步回调函数通常需要使用多线程、事件循环或者异步库(如 Boost.Asio)。这里给出一个简单的基于 C++11 标准库和 std::function 的例子:

  1. 引入头文件:
#include <iostream> #include <functional> #include <thread> #include <future> #include <chrono> 
  1. 定义回调函数:
void async_callback(const std::function<void()> &callback) {     // 模拟异步操作     std::this_thread::sleep_for(std::chrono::seconds(1));     callback(); } 
  1. 实现主函数:
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 函数。主线程等待一段时间后结束,以便我们可以观察到回调函数的执行。

广告一刻

为您即时展示最新活动产品广告消息,让您随时掌握产品活动新动态!