【问题标题】:How multithreading works [closed]多线程如何工作[关闭]
【发布时间】:2023-03-24 21:32:01
【问题描述】:

我对多线程有一个非常基本的问题。如果我们一次运行 10 个线程,那么在单个实例中只有一个线程将处于活动状态,并且线程之间发生切换,或者多个线程可以在单个实例上运行时间?

【问题讨论】:

  • 你能改写一下吗?现在它几乎没有意义。另外,请展示您所做的研究。 SO 不是你的研究助理。
  • 如果您看到 CPU 配置,那么您会看到类似 4 Thread 2 Core 的内容。这意味着一次 4 个线程。我觉得如果你一次运行超过 4 个线程,那么它将在 CLR 中被推迟。
  • 阅读此superuser.com/questions/329904/… 如果您的 CPU 限制为 4 个线程,那么它一次不会运行超过 4 个线程。
  • 此问题与 SE/超级用户上的问题重复:superuser.com/questions/329904/…

标签: java multithreading


【解决方案1】:

这取决于您的硬件和操作系统。如果您的内核比线程少,那么操作系统可能会交错这些线程,也就是说,每次其中一个执行 IO 操作或每次完成其时间片时,它都会切换到不同的线程。

此外,每个内核运行一个执行线程。这就是多核的用途。这通常与时间切片行为混合在一起。

【讨论】:

    【解决方案2】:

    这实际上取决于您的 CPU 和程序设计。如果您有一台四核 PC,则可以同时运行 8 个线程。

    【讨论】:

    【解决方案3】:

    这取决于硬件。许多当前的处理器芯片包含一个以上的 CPU,并且一个 CPU 本身可能能够交错几个线程。大型服务器可能有几十个处理器芯片。在这样的系统上,所有 10 个线程都可以真正同时运行。

    【讨论】:

    • 单个 CPU(内核)甚至可能运行多个线程,具体取决于类型。以 UltraSPARC T2 处理器为例,它每个处理器内核运行 8 个线程。
    【解决方案4】:

    一次只运行一个线程。处理器快速切换它们。例如,考虑一个带有拼写 chk 的文本编辑器..

    你输入-那是一个线程 prog chks fr 错误- 那是另一个线程

    现在如果它们是多线程的,整个进程将在内存中获得空间,然后不同的线程将并发执行

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-12-07
      • 1970-01-01
      • 1970-01-01
      • 2013-09-13
      • 1970-01-01
      • 2011-01-13
      相关资源
      最近更新 更多