tink_core 未来 (haxe) 形式 c++

tink_core Future (haxe) form c++

在 haxe 中有一个名为 tink core which supplies so called "Futures" 的库。

Future 是一个尚未计算的值(例如异步操作的结果)。

除其他外,我可以用 Future 做以下事情:

现在在 C++ 中有 std::future,但我没有看到上面描述的操作是可能的。

另外,std::future好像只能用std::async创建。但是我想用我自己的方式创建期货,没有函数回调。

所以我的问题是:

您的主要错误假设是只有 std::aysnc 会创建 std::future。事实上,std::promisestd::packaged_task 也是一样的。

您的三个操作(映射)中的第一个非常简单。你基本上想要 G(F(x))。这需要一个新的 packaged_task 接受第一个未来,等待它的结果,然后在 F(x)

上调用函数 G()

第二个操作在标准 C++ 中效率低下,因为没有高效的 multi-wait。您必须对两个期货进行投票。相比之下,Windows 有 WaitForMultipleObjects().

第三个本质上是第一个的变体,因为它基本上是 f=F(X);G(f); return f - 一旦 F(X) 已经 return 就调用 G 但忽略 return G 的值并使用 F(X).

中的原始 return 值