跳至主要內容
  • Hostloc 空間訪問刷分
  • 售賣場
  • 廣告位
  • 賣站?

4563博客

全新的繁體中文 WordPress 網站
  • 首頁
  • C++的 std atomic 有捎带同步的效果吗?
未分類
31 8 月 2020

C++的 std atomic 有捎带同步的效果吗?

C++的 std atomic 有捎带同步的效果吗?

資深大佬 : amiwrong123 3

https://www.cnblogs.com/zhao-zongsheng/p/9092520.html

atomic 可以保证对 atomic 变量的可见性。但想知道,一个线程先修改了 一个普通变量,再修改了 一个 atomic 变量,是否也可以保证 别的线程可见这个普通变量的修改?

大佬有話說 (6)

  • 資深大佬 : teawithlife

    atomic 没有保证“可见性”这一说法,保证的是操作的原子性
    另外文章中已经多次提到,在保证输入输出一致的情况下,C++编译器可以自行优化语句的执行顺序,因此你说的 atomic 变量和普通变量,哪个先改变是无法保证的,所以无法实现你说的“同步”效果

  • 資深大佬 : sryanyuan

    需要依赖对应原子变量。

    需要在线程 1 中使用 memory_order_release 来写原子变量,线程 2 中对于对应的原子变量使用 acquire,假设发现变更了,则即可对线程 1 中修改的普通变量可见

  • 資深大佬 : Akiyu

    看起来你说的是 memory order.
    https://en.cppreference.com/w/cpp/atomic/memory_order
    https://gcc.gnu.org/wiki/Atomic/GCCMM/AtomicSync

    你不指定任何参数, 默认类型为 Sequentially Consistent . 无论是普通变量, 还是 atomic 类型都是同步的. 这无需担心.

  • 資深大佬 : fakeshadow

    原子操作的顺序可以控制内存顺序 /屏障。如果一致性要求高并且不熟悉原子操作请尽量使用 seqcst 。

  • 資深大佬 : Akiyu

    https://stackoverflow.com/questions/12346487/what-do-each-memory-order-mean
    再附加一个更好理解的解释

  • 資深大佬 : dangyuluo

    这不就是我前段时间纠结过的 Memory order 么

文章導覽

上一篇文章
下一篇文章

AD

其他操作

  • 登入
  • 訂閱網站內容的資訊提供
  • 訂閱留言的資訊提供
  • WordPress.org 台灣繁體中文

51la

4563博客

全新的繁體中文 WordPress 網站
返回頂端
本站採用 WordPress 建置 | 佈景主題採用 GretaThemes 所設計的 Memory
4563博客
  • Hostloc 空間訪問刷分
  • 售賣場
  • 廣告位
  • 賣站?
在這裡新增小工具