温馨提示×

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

c++
小樊
84
2024-09-24 21:06:01
栏目: 编程语言

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

0