从多个线程调用`std::shared_future<T>::wait`
cppreference明确表示std::shared_future<T>::wait从多个线程调用:
从多个线程在同一个 std::shared_future 上调用 wait 是不安全的;预期用途是等待相同共享状态的每个线程拥有 std::shared_future 的副本。
但我找不到这种说法的依据。标准标记中没有任何wait特殊情况。虽然标准说单个shared_future实例上的方法不同步,但你不需要同步,只要只调用 const 方法:
[17.6.5.9/3] C++ 标准库函数不应直接或间接修改当前线程以外的线程可访问的对象 (1.10),除非这些对象是通过函数的非常量参数直接或间接访问的,包括 this。
有矛盾的 答案上的SO被发现。有没有人有这方面的权威来源,可以解释如何const在 stdlib 上调用方法会导致竞争条件?
THE END
二维码