【问题标题】:How many parallel process can I run?我可以运行多少个并行进程?
【发布时间】:2019-05-26 14:30:48
【问题描述】:

我有一个带有 8 个逻辑处理器的 corei7 处理器。

我正在尝试使用 parallel.For 在 dotnet core 2.2 中运行并行任务。 当我测量开始时间时,有 9 个任务并行启动。 不是应该只有8个吗?

您可以在下面看到:

i => [ThreadId],[ProcessorNumber] == starttime - endtime

并行任务结果

【问题讨论】:

  • 看起来你有 10 个,编号为 0-9。虽然您的 i7 可能有 8 个处理核心,但您可以创建比这更多的线程——但是,在给定的时刻只有 8 个(或更少)它们运行。根据他们的配置(我不确定所有 .net 都支持什么),他们可能会排队直到之前的线程完成,或者 timeslice 它们之间的核心时间。
  • 另一件事是谁决定使用哪个处理器(在 dotnet 应用程序中)?是我的操作系统(这里是 Windows)还是由我的硬件决定的?

标签: parallel-processing .net-core task-parallel-library


【解决方案1】:

您可以并行运行任意数量的任务,但处理器只有 8 个逻辑内核来同时处理 8 个线程。其余的总是排队等待轮到他们。

因此,如果您有 16 个并行进程,每个进程需要 200 毫秒运行,那么您将并行运行进程 1-8 200 毫秒,然后并行运行 9-16 200 毫秒,总计 400 毫秒。如果您有 4 个逻辑核心,您将并行运行进程 1-4、5-8、9-12、13-16,总共需要 800 毫秒。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-08-21
    • 1970-01-01
    • 1970-01-01
    • 2021-04-27
    相关资源
    最近更新 更多