【发布时间】:2014-05-11 13:14:04
【问题描述】:
我听到很多人说 volatile 关键字在多核处理器中更有意义 比单核处理器,但不知道原因。我试图谷歌但没有帮助 这方面。有什么原因吗?
根据我的理解,无论是多核还是单处理器,volatile 关键字都应该具有同等的重要性。 原因在于 volatile ,它保证值将在主内存(堆)中更新而不是保持 它在所有线程都可以看到的线程本地内存(堆栈)中。所以无论是多核还是单处理器, 它有什么不同?
【问题讨论】:
-
你的学长说错了,恐怕;他没有考虑到 TLS(线程本地存储),甚至一些单核 CPU 也有
-
多线程在多核系统中可能更常见,但它也肯定在单处理器系统中使用。所以你是对的,
volatile在这两种情况下都很重要。 -
您可以说,忘记必要的
volatile更有可能在 SMP 机器上崩溃,但在编写软件时推测崩溃的可能性是没有意义的。你是对的,重新排序和延迟读/写也与单 CPU/核心系统相关。
标签: java multithreading concurrency volatile