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
阅读 1.7k
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题