在 C++ 中,then
和 lambda 表達式可以結合使用,以便在異步操作完成時執行特定的代碼。這種結合通常用于異步編程和任務鏈。下面是一個簡單的示例,展示了如何將 then
與 lambda 表達式結合使用:
#include <iostream>
#include <future>
#include <chrono>
int main() {
// 創建一個異步任務
auto async_task = std::async(std::launch::async, []() {
std::this_thread::sleep_for(std::chrono::seconds(2)); // 模擬耗時操作
return 42; // 返回結果
});
// 使用 then 方法鏈接一個 lambda 表達式,該表達式將在異步任務完成后執行
auto result_future = async_task.then([](std::future<int> fut) {
int result = fut.get(); // 獲取異步任務的結果
std::cout << "Async task completed with result: " << result << std::endl;
return result * 2; // 返回新的結果
});
// 獲取最終結果
int final_result = result_future.get();
std::cout << "Final result: " << final_result << std::endl;
return 0;
}
在這個示例中,我們首先創建了一個異步任務(async_task
),該任務在一個單獨的線程上運行并在 2 秒后返回結果 42。然后,我們使用 then
方法將一個 lambda 表達式鏈接到異步任務上。當異步任務完成時,lambda 表達式將被執行,并打印出異步任務的結果。最后,我們從 result_future
中獲取最終結果,并將其打印出來。
需要注意的是,std::future
類沒有內置的 then
方法。在這個示例中,我們使用了一個名為 then
的自定義擴展方法。要實現這個功能,你可以使用第三方庫,如 cpp-taskflow,或者自己實現一個類似的功能。