谁能用 C++ 中的示例解释 async([](){x(); y();})
和 async([]() 之间的区别{x();}).then([](){y();})
?我的理解是,在后一种情况下,x
、y
中的每一个都可能会立即在不同的线程中启动,并且只会在 get 时阻塞(在它们各自的线程中) ()
在未来作为输入传递时被调用。
最佳答案
... what is the difference between
async([](){x(); y();})
andasync([](){x();}).then([](){y();})
?
真的不多 - 那么为什么要有呢?
一言以蔽之可组合性。它允许我们在给定问题域的情况下以富有表现力的方式在异步环境中构建基于模块化功能(或功能片段)的抽象。
这并不是说一个是对的,另一个是错的 - 它只是意味着那些语义(.then()
)在处理异步操作时特别有意义。
单线程计算的语言类似于“做这个和做这个和做这个......”(在我们继续其他事情之前),异步计算的语言是“做这个,当它完成时,然后做这个,当它完成时,然后做这个......”(当我们进行继续做其他事情)。
关于c++ - 理解 std::future::then 的延续,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35074578/