gpt4 book ai didi

c++ - 互斥保护 block 中的同步模式

转载 作者:太空狗 更新时间:2023-10-29 23:15:13 26 4
gpt4 key购买 nike

http://www.boost.org/doc/libs/1_58_0/doc/html/atomic/usage_examples.html

在上述boost例子的“Singleton with double-checked locking pattern”例子中,是否需要memory_order_consume用于_instance的第二次加载和memory_order_release用于_instance的存储?我认为 scoped_lock 已经获取和释放语义并且 _instance 的第一次加载具有同步模式 memory_order_consume。

最佳答案

假设这里使用的 boost 原语支持与其对应的 std 相同的功能,第二个 load 不需要 memory_order_consume 因为它是有保证的根据 mutex 的获取/释放语义与 store/release 同步,你是对的。

也许,memory_order_consume 的使用是基于一个错误的假设,即 load/relaxed 可能会跨越 mutex/acquire 障碍,但根据 mutex 保证这是不可能的,因此 memory_order_relaxed 完全没问题。

另一方面,store/release 是绝对必要的,因为它与不受 mutex 保护的第一个 load/consume 同步>.

关于c++ - 互斥保护 block 中的同步模式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30232154/

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