tink_core Future (haxe) form c++

tink_core Future (haxe) form c++

本文关键字:form c++ haxe core Future tink      更新时间:2023-10-16

在haxe中有一个名为tink-core的库,它提供所谓的"Futures"。

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

在其他事情中,我可以用未来做以下事情:

  • 用一个修改值的函数调用map,用修改后的值创建一个新的未来
  • 首先调用两个期货,以创建一个新的期货,该期货的价值排在第一位
  • 向未来添加一个回调,该回调将在值可用时调用

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

此外,std::future似乎只能使用std::async创建。但我想用自己的方式创建未来,而不需要函数回调。

所以我的问题是:

  • 我是不是误判了std::未来,它可以做到这一切
  • 我还没有在c++中找到一个不同的未来库,可以做到这一点吗

您的主要错误假设是只有std::aysnc创建std::future。事实上,std::promisestd::packaged_task的作用是相同的。

三个操作(映射)中的第一个操作相当简单。你基本上想要G(F(x))。这需要一个新的packaged_task,它获取第一个未来,等待其结果,然后调用F(x) 上的函数G()

第二个操作在标准C++中效率很低,因为没有有效的多等待。你必须对两个未来都进行民意调查。相比之下,Windows有WaitForMultipleObjects()

第三个基本上是第一个的变体,因为它基本上是f=F(X);G(f); return f——一旦F(X)返回,就调用G,但忽略G的返回值,并使用F(X)的原始返回值。