【问题标题】:Can any computer (multi or single core) run many threads at the same time任何计算机(多核或单核)可以同时运行多个线程吗
【发布时间】:2017-05-13 16:15:21
【问题描述】:

我有一个简单但不容易的问题

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

【问题讨论】:

  • 一个核心可以运行两个线程,如果它有超线程。
  • 不完全是。单核 CPU 可以运行任意数量的线程,尽管不是并行的。这甚至适用于具有 HT 的内核 - 超线程加速了线程之间的上下文切换,但不允许您并行运行它们,因为它仍然是具有单个计算单元的单个内核。

标签: java multithreading multicore


【解决方案1】:

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

【讨论】:

    【解决方案2】:

    【讨论】:

      【解决方案3】:

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

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

      另请参阅此答案:Can multithreading be implemented on a single processor system?

      【讨论】:

        【解决方案4】:

        ...同时,同时,我的意思是...在执行的同时...

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

        “同时”这个词通常不会出现在关于并发的正式讨论中。

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

        每当您试图证明某个系统的行为时,并且您的证明围绕事件进行时,A 和 B 都可以;

        • 您知道或可以证明 A 在 B 之前发生,
        • 您知道或可以证明 B 在 A 之前发生,
        • 您的证明不依赖于它们发生的顺序,或者
        • 您的证明将失败。

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

        当你的证明围绕两个区间 I 和 J 进行时,则要么;

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

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

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

        【讨论】:

        • 谢谢先生的帮助
        【解决方案5】:

        你首先要了解你的 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
        

        【讨论】:

          猜你喜欢
          • 2014-06-01
          • 2012-05-30
          • 1970-01-01
          • 1970-01-01
          • 2014-07-28
          • 1970-01-01
          • 2023-02-04
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多