在 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,或者自己实现一个类似的功能。