在静音块中同步模式

Synchronization mode in mutex protected block

本文关键字:同步 模式      更新时间:2023-10-16

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

在上述提升示例的"具有双重检查的锁定模式的单例"示例中,是_instance的第二个负载的memory_order_consume和对_instance存储的memory_order_release的emore_order_release是必需的吗?我以为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同步。