我有一个带8个逻辑处理器的corei7处理器。
我正在尝试使用parallel.For在dotnet core 2.2中运行并行任务。 当我测量开始时间时,有9个并行任务开始。 是不是应该只有8岁?
在下面您可以看到:
i => [ThreadId],[ProcessorNumber] ==开始时间-结束时间
并行任务结果
答案 0 :(得分:0)
您可以并行运行任意多个任务,但是处理器只有8个逻辑核心,可以同时处理8个线程。其余的人将总是排队等候轮到他们。
因此,如果您有16个并行进程,每个进程需要200毫秒才能运行,那么您将并行运行1-8进程200ms,然后并行运行9-16持续200ms,总计400ms。如果您有4个逻辑核心,则将并行运行1-4、5-8、9-12、13-16进程,总共需要800ms。