C++ tink_core Future(haxe)表格c++;
在haxe中有一个名为的库,它提供所谓的“” Future是一个尚未计算的值(例如异步操作的结果) 除此之外,我可以在未来做以下事情:C++ tink_core Future(haxe)表格c++;,c++,c++11,future,C++,C++11,Future,在haxe中有一个名为的库,它提供所谓的“” Future是一个尚未计算的值(例如异步操作的结果) 除此之外,我可以在未来做以下事情: 使用修改值的函数调用map,以使用修改后的值创建新的未来 先打电话给两个未来,创造一个新的未来,价值的未来首先完成 向未来添加回调,该回调将在值可用时调用 现在C++中有,但是我不知道上面描述的操作是可能的。 另外,似乎std::future只能使用std::async创建。但我想用自己的方式创建未来,而不需要函数回调 因此,我的问题是: 我是不是误判了s
- 使用修改值的函数调用map,以使用修改后的值创建新的未来
- 先打电话给两个未来,创造一个新的未来,价值的未来首先完成
- 向未来添加回调,该回调将在值可用时调用
现在C++中有,但是我不知道上面描述的操作是可能的。 另外,似乎std::future只能使用std::async创建。但我想用自己的方式创建未来,而不需要函数回调
因此,我的问题是:- 我是不是误判了std::未来,它能做到这一切 在C++中有不同的未来库吗?我没有找到,可以做到这一点?
std::aysnc
创建了std::future
。事实上,std::promise
和std::packaged_task
也做同样的事情
三个操作中的第一个(映射)相当简单。你基本上想要G(F(x))
。这需要一个新的packaged_任务
,该任务接受第一个未来,等待其结果,然后在F(x)
第二次操作在标准C++中效率低下,因为没有有效的多等待。你必须对两个未来都进行投票。相比之下,Windows具有WaitForMultipleObjects()
第三个基本上是第一个的变体,因为它基本上是
f=f(X);G(f);返回f
-调用G
一次f(X)
返回,但忽略G
的返回值,并使用f(X)
的原始返回值我不是haskell专家,但Bartosz Milewski解决了他与haskell相比在std::future方面存在的一些问题。也许对你有帮助。