首页 > 解决方案 > 运行多个线程的多个处理器 - 可变关键字 Java

问题描述

有人可以帮我理解以下概念吗?我正在按照此处显示的链接研究 Java 中的 Volatile 关键字:https ://www.geeksforgeeks.org/volatile-keyword-in-java/

volatile 的意思似乎是有道理的:在一个线程中所做的更改会立即反映在另一个线程中

文章的解释说:“下图显示如果两个线程在不同的处理器上运行,那么 sharedVariable 的值可能在不同的线程中不同。”

标签: javamultithreading

解决方案


他们怎么可能是两个处理器?这些是同一个 CPU 的一部分吗?

“处理器”通常是 CPU 的同义词。如今,大多数台式电脑、大多数服务器,甚至大多数手机和平板电脑都拥有不止一个 CPU。通常,它们包含一个对称多处理器系统(SMP),其中所有 CPU 共享相同的公共内存系统。

在一些高性能计算应用程序中,您会发现NUMA 系统,它是 SMP 系统和计算集群之间的一种混合体。在 NUMA 系统中,每个 CPU 都有自己的专用内存区域,它可以以低开销访问;但每个人也可以访问其对等方的内存区域,但开销更大。

“核心”是什么意思?

如今, SMP 计算机如此普遍,以至于许多“CPU”/“处理器”芯片实际上包含多个 CPU。当您听到“核心”时,通常是指多处理器芯片中的单个处理器。

但请注意:这些词现在变得有点模棱两可,所以无论有人说“CPU”、“核心”还是“处理器”,您都可能想请他们准确解释它们的意思。

什么是......“虚拟处理器”?

好像还不够复杂!

如今,一些 CPU 具有称为超线程的功能。超线程处理器通常具有两套完整的上下文寄存器。这使得单个 CPU 可以立即在两个不同的线程之间来回切换其注意力。CPU 也可能有一些使用最频繁的子系统的副本,这使其在并行执行两个线程的指令方面的能力有限。例如,它可以代表一个线程获取内存操作数,同时代表另一个线程执行寄存器算术。

从操作系统的角度来看,单个超线程 CPU 表现为两个“虚拟”CPU。虽然,根据复制的系统数量,它的整体性能可能在范围内的任何地方,从与单个 CPU 相同到与两个完整 CPU 相同。

虚拟 CPU 有时也被称为“硬件线程”。


推荐阅读