溫馨提示×

如何在c++中實現(xiàn)異步回調(diào)函數(shù)

c++
小樊
81
2024-09-24 21:06:01
欄目: 編程語言

在 C++ 中實現(xiàn)異步回調(diào)函數(shù)通常需要使用多線程、事件循環(huán)或者異步庫(如 Boost.Asio)。這里給出一個簡單的基于 C++11 標準庫和 std::function 的例子:

  1. 引入頭文件:
#include <iostream>
#include <functional>
#include <thread>
#include <future>
#include <chrono>
  1. 定義回調(diào)函數(shù):
void async_callback(const std::function<void()> &callback) {
    // 模擬異步操作
    std::this_thread::sleep_for(std::chrono::seconds(1));
    callback();
}
  1. 實現(xiàn)主函數(shù):
int main() {
    // 創(chuàng)建一個回調(diào)函數(shù)
    auto my_callback = []() {
        std::cout << "異步任務(wù)完成!" << std::endl;
    };

    // 調(diào)用異步回調(diào)函數(shù)
    async_callback(my_callback);

    // 主線程等待一段時間,以便觀察回調(diào)函數(shù)的執(zhí)行
    std::this_thread::sleep_for(std::chrono::seconds(3));

    std::cout << "主線程結(jié)束。" << std::endl;
    return 0;
}

在這個例子中,我們創(chuàng)建了一個名為 async_callback 的函數(shù),它接受一個 std::function<void()> 類型的回調(diào)函數(shù)作為參數(shù)。我們在 async_callback 中模擬了一個異步操作(使用 std::this_thread::sleep_for 函數(shù)暫停一秒鐘),然后在異步操作完成后調(diào)用回調(diào)函數(shù)。

在主函數(shù)中,我們定義了一個 lambda 表達式作為回調(diào)函數(shù),并將其傳遞給 async_callback 函數(shù)。主線程等待一段時間后結(jié)束,以便我們可以觀察到回調(diào)函數(shù)的執(zhí)行。

0