c++ - 理解 std::future::then 的延续

标签 c++ c++14

谁能用 C++ 中的示例解释 async([](){x(); y();})async([]() 之间的区别{x();}).then([](){y();}) ?我的理解是,在后一种情况下,xy 中的每一个都可能会立即在不同的线程中启动,并且只会在 get 时阻塞(在它们各自的线程中) () 在未来作为输入传递时被调用。

最佳答案

... what is the difference between async([](){x(); y();}) and async([](){x();}).then([](){y();})?

真的不多 - 那么为什么要有呢?

一言以蔽之可组合性。它允许我们在给定问题域的情况下以富有表现力的方式在异步环境中构建基于模块化功能(或功能片段)的抽象。

这并不是说一个是对的,另一个是错的 - 它只是意味着那些语义(.then())在处理异步操作时特别有意义。

单线程计算的语言类似于“做这个做这个做这个......”(在我们继续其他事情之前),异步计算的语言是“做这个,当它完成时,然后做这个,当它完成时,然后做这个......”(当我们进行继续做其他事情)。

关于c++ - 理解 std::future::then 的延续,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35074578/

相关文章:

c++ - 为什么指向函数的指针可以这样转换?

compiler-errors - 我开始评论我的C++程序,然后出现错误

C++ 默认初始化类型

c++ - 部分特化的模板子类化

c++ - std::function 性能与模板相比

c++ - 如何在char变量中存储特殊的Unicode字符(C++)

c++ - 为什么我的程序在析构函数抛出异常时终止?

c++ - 利用 SSE 和其他 CPU 扩展

c++ - 在 constexpr-if 条件下比较 constexpr 函数参数会导致错误

c++ - 在 constexpr 变量模板中模拟 nan/inf