tink_core 未来 (haxe) 形式 c++
tink_core Future (haxe) form c++
在 haxe 中有一个名为 tink core which supplies so called "Futures" 的库。
Future 是一个尚未计算的值(例如异步操作的结果)。
除其他外,我可以用 Future 做以下事情:
- 使用修改值的函数调用映射,用修改后的值创建新的未来
- 先用两个 future 调用,用先完成的 future 的值创建一个新的 future
- 为未来添加一个回调,当值可用时将被调用。
现在在 C++ 中有 std::future,但我没有看到上面描述的操作是可能的。
另外,std::future好像只能用std::async创建。但是我想用我自己的方式创建期货,没有函数回调。
所以我的问题是:
- 我是不是看错了std::future,这一切它都能做到?
- 有没有我还没有找到的可以做到这一点的 c++ 未来库?
您的主要错误假设是只有 std::aysnc
会创建 std::future
。事实上,std::promise
和 std::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 值
在 haxe 中有一个名为 tink core which supplies so called "Futures" 的库。
Future 是一个尚未计算的值(例如异步操作的结果)。
除其他外,我可以用 Future 做以下事情:
- 使用修改值的函数调用映射,用修改后的值创建新的未来
- 先用两个 future 调用,用先完成的 future 的值创建一个新的 future
- 为未来添加一个回调,当值可用时将被调用。
现在在 C++ 中有 std::future,但我没有看到上面描述的操作是可能的。
另外,std::future好像只能用std::async创建。但是我想用我自己的方式创建期货,没有函数回调。
所以我的问题是:
- 我是不是看错了std::future,这一切它都能做到?
- 有没有我还没有找到的可以做到这一点的 c++ 未来库?
您的主要错误假设是只有 std::aysnc
会创建 std::future
。事实上,std::promise
和 std::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)
.