На многоядерном ПК с Windows почему один процесс только иногда использует все ядра?

655
hocunofu

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

Один из них легко проверить для большинства людей: http://fitgirl-repacks.site/donate-by-mining/

Отключив многопроцессорную функцию вашего браузера, настройка «Процессорные потоки» на веб-странице остается в силе. Вы можете увидеть один процесс браузера, используя все ваши ядра процессора.

Почему это происходит только иногда, в то время как в большинстве случаев этого не происходит (так много программ порождают несколько процессов, пытаясь использовать преимущества многопроцессорной системы)?

0
[Параллелизм] (https://en.wikipedia.org/wiki/Concurrent_computing#Languages_supporting_concurrent_programming) ... [Пример] (https://tour.golang.org/concurrency/1) RedGrittyBrick 6 лет назад 0

1 ответ на вопрос

1
Mokubai

Программа может быть написана для использования нескольких потоков, что позволяет им использовать более одного ядра.

Программа также может быть написана для разделения на отдельные процессы, каждый с одним или несколькими потоками для работы.

Существует очень тонкая, но реальная разница между многопоточностью и многопроцессорностью. Отключение многопроцессорной функциональности не отключает многопоточность, которая уже присутствовала.

Недавние обновления браузера, позволяющие использовать многопроцессорную функциональность, повышают безопасность и устойчивость к сбоям, разделяя потоки для отдельных страниц в их собственный процесс, каждый из этих процессов может все еще иметь несколько потоков, причем все они работают независимо.