[英]Is it legal to pass `std::shared_future` as a reference to functions?
[英]Is it legal to call shared_future::get() multiple times on the same instance in the same thread?
我既不能直接确认也不能驳斥此事。 所有答案似乎都解决了“从多个线程访问”的问题,而不是重复访问本身。
标准是否定义了std::shared_future
的行为? 那么boost::shared_future
呢?
在std::shared_future<T>::valid
每个cppreference
与std :: future不同,调用get()时,std :: shared_future的共享状态不会失效。
这是有道理的。 如果不是这种情况那么你就不能让多个线程能够调用get
。 我们可以通过查看标准来进一步提高这一点。 在[futures.unique.future] / 15 ,他们明确规定get
只使用一次
释放任何共享状态([futures.state])。
虽然在[futures.shared.future] / 18中它没有说明这样的事情,所以在调用get
之后状态仍然有效。
boost::shared_future
具有相同的行为。 每参考 get
没有文字说明它无效通话中的共享状态来get
,所以你可以把它多次。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.