Threads Zeitvorstellung
-
Hallo,
Ich frage mich mal, wie oft werden die zuteilbaren Threads in einem Programm eigentlich pro sekunde abgewechselt? Wenn ich in meinem Programm 2 oder 3 Threads habe und keiner gibt freiwillig seine Kontrolle früher ab, wie oft wird da pro Sekunde circa zwischen den Threads rotiert wenn sie alle die gleiche normale Priorität haben?
-
Die Zeiteinteilung funktioniert ja primär mal nach Prioritäten.
Wenn aber alle Threads die gleiche Priorität haben, dann wird das Round-Robin Verfahren angewendet und da bekommt jeder Thread ein gewisses "Quantum".
Dieses Quantum wird bei Thread-Start auf einen festen Wert gesetzt (abhängig vom OS und Version). Dieses Quantum wird bei jedem Timer-Tick (i.d.R. 10-20 ms) um einen bestimten Wert reduziert. Ist das Ergebnis dann 0 oder kleiner so kommt der nächste Thread der gleichen Priorität dran.
Das Quantum kann auch noch durch diverse andere Dinge beeinflusst werden (ForegroundBoots/Variable/Fixed).Für w2k Pro. z.B. ist der Start-Wert bei 6 und er wird bei jedem Tick um 3 reduziert. Somit läuft hier ein Thread ca. 20-40 ms.
Bei der Server Version ist der Startwert 36 und wird ebenfalls je um 3 reduziert. Somit läuft hier ein Thread wesentlich länger am Stück.Genaueres findest Du in "Microsoft Windows Internals":
http://www.amazon.de/exec/obidos/ASIN/0735619174/qid=1133643464/sr=8-2/ref=sr_8_xs_ap_i2_xgl/028-4966837-6613322In Kapitel 6 auf den Seiten 325-367