Frage

Ich habe eine Frage bezüglich pthread-Implementierung auf Linux.

Angenommen, ein Prozess 5 Fäden hat. Nun, wie funktioniert der Scheduler diese Fäden sieht (oder überhaupt nicht sehen tut). z.B. Wenn Scheduler aufgerufen wird, nicht nur den Hauptprozess planen, und dann das die Last des Hauptprozesses zu Zeitplan zwischen jedem seines Gewinde.

Oder ist es andersrum, dass Scheduler Pläne jeden Thread, als ob es ein separater Prozess ist.

War es hilfreich?

Lösung

Für moderne Linux (NPTL pthread-Implementierung), der Scheduler Pläne Threads, wird ein Thread eines "Dünner Prozess" betrachtet. pthread_create wird in Bezug auf die clone Systemaufruf.

Andere Tipps

Pläne Linux jeder Thread, als ob es ein Verfahren mit Rahmen als PTHREAD_SCOPE_SYSTEM. Die nptl Implementierung können mehrere CPUs nutzen.

Wie Logan sagte, ist jeder Thread geplant unabhängig.

Wenn Sie jedoch wünschen Sie Linux-Prozess Kontrollgruppen Zeitplan Gruppen von Threads verwenden stattdessen.

Prozesskontrollgruppen machen die Planung etwas ineffizient, aber es kann viel mehr fair sein.

Eine Anwendung, die sehr populär geworden ist, ist alle Prozesse und Threads von jedem TTY in eine Kontrollgruppe pro TTY erstellt zu setzen. Dies führt in all einen grafischen Anwendungen des Benutzers auf dem gleichen Niveau wie seine 24-Thread-Kernel Kompilierung geplant ist, dass er in einem Terminalfenster gestartet. Die grafischen Anwendungen erhalten 50% und die Zusammenstellung bekommt 50%. Wenn er ein weiteres Terminal-Fenster öffnet sich und beginnt mit weiteren 24 Threads zu kompilieren glibc, es verschiebt sich auf 33% Desktop-Anwendungen, 33% Kernel zu kompilieren und 33% glibc Kompilierung.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top