如何解决了解单个线程中C ++原子的内存顺序
根据http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2012/n3337.pdf中的1.10.19点,即使在宽松的顺序下,编译器也无法对同一对象的原子操作重新排序。 以下是我对内存排序的理解(仅考虑单线程):
- 如果 memory_order_seq_cst ,则无论任何对象,原子操作都无法重新排序。
- 如上所述,在 memory_order_release / memory_order_acquire 的情况下,无法对同一对象的原子操作进行重新排序。
我的问题是关于在获取/释放顺序的情况下不同对象上原子操作的顺序?
从https://www.youtube.com/watch?v=A8eCGOqgvH4开始,从42:30开始可以更好地理解问题。
现在,对于与草案中所述相同的对象进行操作时,无法对其进行重新排序,因此将遵循“ SC Acq / Rel”,但是对不同对象进行的操作又如何呢?在这种情况下,视频中“普通购买/授权”中提到的情况是否会发生,即获取一个对象的顺序要高于释放另一个对象的顺序?
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。