Cur*_*ous 5 c++ concurrency future c++11
std::future::then论文N3784中的接口包括一个重载版本,它接受执行器(在N3562中详细描述)作为参数。因此,如果您想要更多地控制回调在哪个线程上执行,您可以这样做。
但是这里的官方文档介绍了并发 TS 中的所有功能http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2015/p0159r0.html#futures.unique_future并没有包含 .then() 的重载并且根本不提及执行器。它说
当对象的共享状态就绪时,将在未指定的执行线程上调用Continue
INVOKE(DECAY_COPY(std::forward<F>(func)),并在调用该线程的线程中对调用进行评估。std::move(*this))DECAY_COPY()
为什么接口不提供对闭包执行方式的精确控制?那么如何控制哪个线程运行回调呢?为什么对提议的版本进行更改?
注意我不确定我链接到的并发 TS 论文是否是最新的,但 cppreference 也没有executor在任何地方提到 s
编辑如果有人在某些 C++ 标准论文中提到了不继续执行程序的原因,那就太好了!