gpt4 book ai didi

multithreading - 是否应该将 double 或 long 变量声明为 volatile 以在 64 位操作系统和 64 位 cpu 中实现读\写原子性?

转载 作者:行者123 更新时间:2023-12-03 12:52:43 25 4
gpt4 key购买 nike

是否应该将 double 或 long 变量声明为 volatile 以在 64 位操作系统和 64 位 cpu 中实现读\写原子性?对于 32 位操作系统和 32 位处理器也是如此吗?

最佳答案

对此有两个答案,也不是您希望听到的:

  • 不,volatile 不是 保证原子性,所以如果你需要原子性,volatile不会帮你的。
  • 有无 volatile ,原子性实际上是实现定义的。在几乎所有的 CPU 上,原生字大小的变量都是以原子方式读取和写入的(至少在它们正确对齐的情况下,通常是这种情况)。在 x86 上,较小的也可以原子访问。所以是的,在 x86 上,32 位变量将被原子读/写,而在 x86 上,64 位变量也将被原子读/写。但同样,它取决于 CPU(和编译器)。
  • 关于multithreading - 是否应该将 double 或 long 变量声明为 volatile 以在 64 位操作系统和 64 位 cpu 中实现读\写原子性?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10161348/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com