c++11新增的atomic系列接口是如何控制memory order的?

发布于 2022-09-11 19:10:49 字数 762 浏览 16 评论 0

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 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文