std::mutex 会创建栅栏吗?

2024-04-12

如果我锁定一个std::mutex我总会得到一个记忆栅栏吗?我不确定这是否暗示或强迫你获得栅栏。

Update:

根据 RMF 的评论找到了这个参考资料。

多线程编程和内存可见性 http://en.wikipedia.org/wiki/Memory_barrier#Multithreaded_programming_and_memory_visibility


据我了解,这包含在:

1.10 多线程执行和数据竞争

Para 5:

该库定义了许多原子操作(第 29 条)和互斥体上的操作(第 30 条) 被特别标识​​为同步操作。这些操作在使一个线程中的分配对另一个线程可见方面发挥着特殊作用。对一个或多个内存位置的同步操作可以是消耗操作、获取操作、释放操作、或者获取和释放操作两者。没有关联内存位置的同步操作是栅栏,并且可以是获取栅栏、释放栅栏或同时是获取栅栏和释放栅栏。此外,还有宽松的原子操作,它们不是同步操作,以及原子读-修改-写操作,它们具有特殊的特性。 [注意:例如,获取互斥锁的调用将对包含互斥锁的位置执行获取操作。相应地,释放相同互斥锁的调用将在这些相同位置执行释放操作。非正式地,在 A 上执行释放操作会强制其他内存位置上的先前副作用对稍后在 A 上执行消耗或获取操作的其他线程可见。“宽松”原子操作不是同步操作,尽管与同步操作一样,他们无法为数据竞争做出贡献。 ——尾注]

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

std::mutex 会创建栅栏吗? 的相关文章

随机推荐