Warum verwendet ein einzelner Prozess auf einem Multi-Core-Windows-PC nur gelegentlich alle Kerne?

805
hocunofu

Ich hatte jahrelang den Eindruck, dass ein einzelner Prozess nur einen Kern der CPU verwenden kann, aber kürzlich habe ich zwei Beispiele gefunden, bei denen ein einziger Prozess alle Kerne eines Multi-Core-Windows-Systems verwendete.

Eine davon ist für die meisten Menschen einfach zu testen: http://fitgirl-repacks.site/donate-by-mining/

Wenn Sie die Multi-Process-Funktion Ihres Browsers deaktivieren, ist die Einstellung "CPU-Threads" auf der Webseite weiterhin wirksam. Sie können den Prozess des einzelnen Browsers mit all Ihren CPU-Kernen sehen.

Warum passiert das nur manchmal, während dies meistens nicht der Fall ist (so viele Programme erzeugen mehrere Prozesse, um zu versuchen, das Multiprozessorsystem zu nutzen)?

0
[Parallelität] (https://en.wikipedia.org/wiki/Concurrent_computing#Languages_supporting_concurrent_programming) ... [Beispiel] (https://tour.golang.org/concurrency/1) RedGrittyBrick vor 6 Jahren 0

1 Antwort auf die Frage

1
Mokubai

Ein Programm kann so geschrieben werden, dass es mehrere Threads verwendet, wodurch mehrere Core verwendet werden können.

Ein Programm kann auch so geschrieben werden, dass es sich in verschiedene Prozesse aufteilt, die jeweils einen oder mehrere Threads enthalten.

Es gibt einen sehr subtilen, aber echten Unterschied zwischen Multi-Thread und Multi-Prozess. Durch das Deaktivieren der Multiprozess-Funktionalität wird das bereits vorhandene Multithreading nicht deaktiviert.

Die kürzlich durchgeführten Browserupdates zur Ermöglichung der Mehrprozessfunktionalität verbessern die Sicherheit und die Absturztoleranz, indem Threads für separate Seiten in ihren eigenen Prozess aufgeteilt werden. Jeder dieser Prozesse kann immer noch mehrere Threads aufweisen, die alle unabhängig voneinander arbeiten.