任何计算机(多核或单核)都可以同时运行多个线程

时间:2016-12-29 10:39:27

标签: java multithreading multicore

我有简单但不容易的问题

任何计算机(多核或单核)是否可以同时运行多个线程,同时,我的意思是两个或多个线程在执行的同时运行?

5 个答案:

答案 0 :(得分:3)

同时运行多个线程的能力是生成多核处理器的原因。由于各种原因,提高单核CPU的效率变得越来越困难。同时,可以执行与您拥有的核心/处理器数量一样多的线程。如果您有多个多核处理器,则并行运行的最大线程数将为num_cpus * cores_per_cpu。如果线程数超过可用内核数,它们将以隔行扫描方式执行。

答案 1 :(得分:2)

答案 2 :(得分:2)

您可以在您的环境中创建多个线程,并让单个CPU核心执行这些线程。但是,它们的执行不是并行的,而只是并发的。换句话说,CPU将首先执行一个线程(部分或完全),然后执行另一个线程。如果第一个线程上还有工作,那么它可能会再次返回第一个线程并执行更多指令。因此,线程正在进行并发。如果线程在多个CPU核心上执行,那么它们可以同时执行 ,这意味着它们在 parallel 中执行。

总之,单个CPU核心上的多个线程可以同时执行。多个CPU内核上的多个线程可以同时或并行执行。

另见答案:Can multithreading be implemented on a single processor system?

答案 3 :(得分:0)

  

......与此同时,同一时间,我的意思是......在执行的同时......

听起来你正在努力寻找一种正式的方式来提问你。

单词"同时"通常不会出现在有关并发的正式讨论中。

当您谈论时间时,事件是不可分割的时刻,然后有间隔。每个间隔都由其开始事件及其结束事件定义。

每当你试图证明某个系统的行为,并且你的证据围绕事件,A和B然后;

  • 你知道或可以证明A发生在B之前,
  • 你知道或可以证明B发生在A之前,
  • 您的证明并不取决于它们发生的顺序,或
  • 你的证明会失败。

这是唯一的可能性。如果您的证明失败,那么您将无法通过说" A和B同时发生来拯救它。"

当你的证据围绕两个区间时,我和J,然后是;

  • 你知道或者可以证明我在J开始之前完成,或者
  • 你知道或者可以在我开始之前证明J完成,或者
  • 两个区间重叠

"重叠"是正式讨论中的首选词。所以,...

...在单处理器系统上执行两个或多个线程重叠,但在任何给定的时刻,单个CPU将仅代表其中一个线程工作线程。

答案 4 :(得分:0)

您必须首先了解自己的 CPU 能力。

使用这些来了解您的 CPU 可以处理多少进程。

1. lscpu 
2. cat /proc/sys/kernel/threads-max
3. cat /proc/sys/kernel/pid_max
4. htop
5. top
6. cat /proc/cpuinfo
7. ulimit -a
8. ps -aeF