【发布时间】:2016-03-14 04:22:58
【问题描述】:
我想知道为什么我们需要 std::promise 和 std::future ?为什么 c++11 标准将 get 和 set_value 分为两个单独的类 std::future 和 std::promise? 在这个post 的回答中,它提到:
它被分成这两个独立的“接口”的原因是 对“消费者/阅读者”隐藏“写入/设置”功能。
我不明白躲在这里的好处。但是如果我们只有一个类“未来”不是更简单吗?例如:promise.set_value 可以替换成 future.set_value。
【问题讨论】:
-
为什么你认为把它们砸在一起是个好主意?为什么有人要同时读取和写入结果?
-
目前如果我们想从future中获取值,我们调用promise.get_future().get(),如果我们想设置值,我们调用promise.set_value()。我只是想知道我们需要额外的操作。
-
@camino 好吧,作为 T.C.也说过,没有真正的理由提供捷径来获得无论如何都应该知道的值。
-
@camino:如果您有一个承诺,那么您永远不应该成为检索价值的人。特别是因为您只能拨打
get_future一次。