我听到很多人说volatile关键字在多核处理器中比单核处理器更有意义,但不知道原因。我试图谷歌,但在这方面没有帮助。有什么理由吗?
根据我的理解,无论是多核还是单处理器,volatile关键字都应具有同等的重要性。原因是volatile,它保证该值将在主内存(堆)中更新,而不是将其保留在所有线程都可以看到的线程本地内存(堆栈)中。那么,无论是多核还是单处理器,它有何不同?
“易失性意识”与内核数量无关。JVM隐藏了基础架构。更不用说volatile是语言关键字,因此它在每种体系结构上的行为都应相同。
您描述了volatile的作用,这是正确的。该 应用程序的架构 ,可能需要的挥发,没有别的用途。
如果您有兴趣,这是一篇与volatile有关的好文章,以及Java中使用的内存模型的基本概念。
http://jeremymanson.blogspot.hu/2008/11/what-volatile-means-in-
java.html
问题内容: 如何使用python的多处理池处理KeyboardInterrupt事件?这是一个简单的示例: 当运行上面的代码时,按时会引发,但是该过程只是在此时挂起,我必须在外部将其杀死。 我希望能够随时按下并导致所有进程正常退出。 问题答案: 这是一个Python错误。等待threading.Condition.wait()中的条件时,从不发送KeyboardInterrupt。复制: 直到wa
问题内容: 我一直在阅读有关Python的多处理模块的信息。我仍然认为我对它可以做什么没有很好的了解。 假设我有一个四核处理器,并且我有一个包含1000000个整数的列表,我想要所有整数的总和。我可以简单地做: 但这仅将其发送到一个内核。 是否有可能使用多处理模块将数组划分为多个,并让每个核获得其部分的总和并返回值,以便可以计算总和? 就像是: 任何帮助,将不胜感激。 问题答案: 是的,可以对多个
问题内容: 许多次我听说最好将线程池中的线程数保持在该系统中的内核数以下。具有比核心数多两倍或更多的线程不仅浪费,而且还可能导致性能下降。 那些是真的吗?如果不是,那么揭露这些主张的基本原则是什么(特别是与Java有关)? 问题答案: 许多次我听说最好将线程池中的线程数保持在该系统中的内核数以下。具有比核心数多两倍或更多的线程不仅浪费,而且还可能导致性能下降。 这些主张 作为一般性陈述 是不正确的
问题内容: 我希望能够使用gnu octave编程多个线程,以便它将利用多个处理器。 我在Fedora 17 Linux上安装了GNU Octave,并执行了以下操作: 在我的计算机上安装了最新版本的octave 3.6.2。它的效果很好,但是当您将两个巨大的矩阵相乘时,它会使八度使用的一个CPU陷入瘫痪。如果矩阵乘法利用所有内核,那就太好了,因为在这种情况下,CPU显然是瓶颈。 倍频程能否充分利
问题内容: 如果在多处理器或多处理器计算机上运行,而jvm可能绝对同时运行多个线程(不只是同时出现),那么api方法返回什么?…在上述情况下,它是否会返回当前线程之一是随机的吗? 问题答案: 它返回您当前正在其中运行的线程。如果你有两个核心和两个线程和完全并行运行,要求在同一时间这个方法,它将返回和适当的。 您的理解是正确的-此方法返回的线程始终处于运行状态-因为必须从某个线程调用该线程,
问题内容: 我知道,现在大多数处理器都有两个或多个内核,因此多核编程非常流行。有在Java中利用此功能的功能吗?我知道Java有一个Thread类,但是我也知道这是在多核流行之前的很长时间了。如果我可以使用Java中的多个内核,我将使用什么类/技术? 问题答案: Java是否支持多核处理器/并行处理? 是。它还是其他编程语言的平台,在该平台上,实现增加了“真正的多线程”或“真正的线程”卖点。在较新