我可以运行多少个并行进程?

Cod*_*aks 7 parallel-processing task-parallel-library .net-core

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

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

下面你可以看到:

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

在此处输入图片说明

并行任务结果

Kar*_*ner 5

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

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