未来是一个尚未计算的值(例如异步操作的结果)。
除其他外,我可以用未来做以下事情:
现在在C++中有了科技促进发展:未来,但我认为上面描述的操作是不可能的。
而且,似乎只有使用std::异步才能创建std::未来。但我想以我自己的方式创造未来,而不需要函数回调。
所以我的问题是:
发布于 2016-01-04 15:38:52
您的主要错误假设是,只有std::aysnc才能创建std::future。事实上,std::promise和std::packaged_task也这样做。
您的三个操作(映射)中的第一个操作相当简单。你基本上想要G(F(x))。这需要一个新的packaged_task,它接受第一个未来,等待其结果,然后调用F(x)上的函数G()。
标准C++中的第二个操作效率很低,因为没有有效的多重等待。你得同时调查这两个未来。相比之下,Windows有WaitForMultipleObjects()。
第三种基本上是第一种的变体,因为它基本上是f=F(X);G(f); return f --一旦F(X)返回,就调用F(X),但是忽略G的返回值,使用来自F(X)的原始返回值。
https://stackoverflow.com/questions/34592739
复制相似问题