我对此事既没有直接确认也没有反驳。所有答案似乎都是针对“从多个线程进行访问”方面的问题,而不是针对重复访问本身。
标准是否定义了std::shared_future
的行为? boost::shared_future
呢?
答案 0 :(得分:12)
std::shared_future<T>::valid
中的每次点击首选项
与std :: future不同,调用get()时std :: shared_future的共享状态不会无效。
有道理。如果不是这种情况,那么您将不能有多个线程可以调用get
。我们可以通过查看标准来进一步支持这一点。在[futures.unique.future]/15中,他们明确声明get
仅在以下情况下起作用
释放任何共享状态([futures.state])。
在[futures.shared.future]/18中,它没有声明这种情况,因此在调用get
之后,该状态仍然有效。
boost::shared_future
具有相同的行为。每个the reference get
都没有文字说明在调用get
时共享状态无效,因此您可以多次调用它。
答案 1 :(得分:8)