Сколько параллельных процессов я могу запустить? - PullRequest
0 голосов
/ 28 декабря 2018

У меня есть процессор corei7 с 8 логическими процессорами.

Я пытаюсь запустить параллельное задание в dotnet core 2.2 с использованием parallel.For.когда я измеряю время запуска, параллельно запускаются 9 задач.Разве это не должно быть просто 8?

ниже вы можете видеть:

i => [ThreadId], [ProcessorNumber] == время начала - время окончания

enter image description here

Результат параллельных задач

1 Ответ

0 голосов
/ 29 декабря 2018

Вы можете запускать сколько угодно параллельных задач, но процессор имеет только 8 логических ядер для одновременной обработки 8 потоков.Остальные всегда будут стоять в очереди и ждать своей очереди.

Таким образом, если у вас есть 16 параллельных процессов, каждый из которых занимает 200 мс, то вы будете запускать процесс 1-8 параллельно в течение 200 мс, а затем 9-16 впараллель для 200 мс, в общей сложности на 400 мс.Если бы у вас было 4 логических ядра, вы бы запустили процесс 1-4, 5-8, 9-12, 13-16 параллельно, всего 800 мс.

...