gpt4 book ai didi

c++ - 在同一个线程的同一个实例上多次调用 shared_future::get() 是否合法?

转载 作者:可可西里 更新时间:2023-11-01 17:08:43 26 4
gpt4 key购买 nike

我找不到关于此事的直接确认或反驳。所有答案似乎都解决了“从多线程访问”方面的问题,而不是重复访问本身。

标准是否定义了 std::shared_future 的行为? boost::shared_future 怎么样?

最佳答案

根据 std::shared_future<T>::valid 中的 cppreference

Unlike std::future, std::shared_future's shared state is not invalidated when get() is called.

这是有道理的。如果不是这种情况,那么您将无法让多个线程调用 get。 .我们可以通过查看标准进一步支持这一点。在 [futures.unique.future]/15他们明确声明 get只适用于一次

releases any shared state ([futures.state]).

[futures.shared.future]/18 中它没有说明这样的事情所以状态在get之后仍然有效被称为。


boost::shared_future具有相同的行为。每the reference get没有文字说明它使调用 get 时的共享状态无效所以你可以多次调用它。

关于c++ - 在同一个线程的同一个实例上多次调用 shared_future::get() 是否合法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56756112/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com