溫馨提示×

如何在c++中實現異步回調函數

c++
小樊
120
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
亚洲午夜精品一区二区_中文无码日韩欧免_久久香蕉精品视频_欧美主播一区二区三区美女