c++11新增的atomic系列接口是如何控制memory order的?
atomic用于替换__sync系列接口,新增了memory order的参数,但是这部分是如何控制的并没有体现在汇编语言上。
我理解应该是不同的memory order就会有不同的内存屏障(memory barrier)汇编,实际上并没有.
那么,这部分如何控制?
一个例子来自:
https://en.cppreference.com/w...
完全没有看到memory order对汇编有什么影响:
https://gcc.godbolt.org/z/dDoeSi
可以看到无论memory order是啥,汇编都没啥变化:
while(std::atomic_flag_test_and_set_explicit(&lock, std::memory_order_seq_cst))
//while(std::atomic_flag_test_and_set_explicit(&lock, std::memory_order_relaxed))
都是:
.LBE1025:
tst w0, 255
bne .L8
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论