【发布时间】: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