Frage

Mit anderen Worten, welche Vorteile bewirken Hybridfaden Haben Sie über 1: 1 (nur Kernel) und N: 1 (nur Benutzer) Threading?

Dies ist eine Follow-up zu Was ist der Unterschied zwischen Threads auf Benutzerebene und Threads auf Kernelebene?

War es hilfreich?

Lösung

Ich denke, hybrides Threading ist einem sehr ähnlich Fadenpool.

Im Thread -Pool verwenden Sie $ N $ Kernel -Threads, um $ M $ „Aufgaben“ auszuführen, wobei $ M $ viel höher sein kann als $ n $. Der Vorteil gegenüber der Verwendung eines Threads für jede Aufgabe (nur Kernel -Threading) besteht darin, dass Sie weniger Ressourcen konsumieren, z. in dieser Hinsicht). Sie erhalten auch weniger Kontextschalter, wodurch die Leistung erhöht wird (im idealen Fall, in dem Sie so viele laufende Threads haben, wie Sie Prozessoren haben, haben Sie möglicherweise fast keinen Kontextschalter).

Der Vorteil nur für Benutzer -Threading besteht darin, dass Sie mehrere CPUs oder mehrere CPU -Kerne nutzen können. Und wenn eine Aufgabe blockiert, können Sie einen anderen Kernel -Thread erstellen, um die verfügbare CPU effizienter zu verwenden.

Sie erhalten also die Vorteile beider Ansätze auf Kosten einer zusätzlichen Benutzer-Mode-Planung.

Ein Nachteil gegenüber Kernel Nur Planung ist möglicherweise eine größere Latenz: Wenn alle Themen im Pool beschäftigt sind und Sie neue kurze Aufgaben hinzufügen, warten Sie möglicherweise lange, bevor er ausgeführt wird.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit cs.stackexchange
scroll top