0

如果我理解正确,易失性会导致内存屏障使本地内存与主内存同步。这在多核机器上非常有用。

当多线程应用程序在单核机器上运行时,这种内存同步会发生吗?

4

2 回答 2

3

当多线程应用程序在单核机器上运行时,这种内存同步会发生吗?

是的。 volatile当另一个线程访问同一volatile字段时,会导致读取和/或写入内存屏障并确保“发生在之前”的关系。请参阅本教程。它确保对本地 CPU 缓存的更改写入主内存,并且对主内存的更改使任何 CPU 缓存页面无效。

这在单处理器机器上不太重要,因为只有一个 CPU 缓存需要担心。但是,重要的是要意识到“发生在之前”的保证volatile仍然很重要。即使只有一个 CPU,它们也可以防止由于多个线程的时间切片而可能发生的竞争条件。

于 2013-09-30T16:59:36.193 回答
1

当多线程应用程序在单核机器上运行时,这种内存同步会发生吗?

是的。

于 2013-09-30T16:31:04.700 回答