| Autor |
Beitrag |
Andreas Pfau
      
Beiträge: 997
|
Verfasst: Mo 03.03.03 17:26
Hallo,
wer kann mir das erklären:
- Thread Priorität
- Thread Prioritätsklasse
- Prozess Boost
Was ist was, vor allem der Unterschied zwischen Prioritätsklasse und priorität?
_________________ Life is a bad adventure, but the graphic is really good!
|
|
OregonGhost
      
Beiträge: 215
|
Verfasst: Di 04.03.03 15:05
Prioritätsklasse ist sozusagen die Priorität des Prozesses. Ein Thread hat außerdem eine relative Priorität. Aus der Prioritätsklasse des Prozesses und der relativen Priorität des Threads entsteht die absolute Priorität des Threads, also die Priorität, die der Scheduler verwendet, um zu gucken, ob der Thread jetzt ran darf.
Ein Priority Boost wird für Threads vollzogen, die beispielsweise in den Vordergrund geholt werden, damit der Benutzer damit auch arbeiten kann, wenn im Hintergrund irgendein Prozess mit höherer Priorität läuft. Dies passiert auch beispielsweise bei Eingaben des Benutzers etc.
Im PSDK unter Base Services -> DLLs, Processes, and Threads -> About Processes and Threads -> Scheduling sind die Artikel "Scheduling Priorities" und "Priority Boosts" zu finden, die das ganze näher erläutern.
_________________ Oregon Ghost
---
Wenn NULL besonders groß ist, ist es fast schon wie ein bisschen eins.
|
|
Andreas Pfau 
      
Beiträge: 997
|
Verfasst: Di 04.03.03 16:27
Danke für die Hilfe!
Ich habe in meiner Online-Hilfe nix gefunden, nur die Befehle. Also, lass mich zusammenfassen:
- Mit SetPriorityClass() setze ich die Priorität des Prozesses (GetCurrentProcess())
- Mit SetThreadPriority() setze ich die relative Priorität des Threads (GetCurrentThread()), rel. zum Prozess
- Mit SetThreadPriorityBoost() "booste" ich einen Prozess hoch. Das heißt, dass sobald er wieder mal bearbeitet wird, wird er solange nicht abgelöst, bis er den boost wider wegnimmt
- Das gleche gilt für einen Thread
Stimmt das alles???
_________________ Life is a bad adventure, but the graphic is really good!
|
|
FD-83
      
Beiträge: 49
|
Verfasst: Di 04.03.03 17:12
Ich würde aber prinzipiell Vorsichtig mit solchen Sachen sein. Man sollte "seinen" Prozess / Thread nur dann höher setzten wenn es wirklich erforderlich ist. Wenn deine Anwendung aktiv ist (also die Anwendung gerade im Vordergrund ist) wird sie von Windows sowieso bevorzugt. Dein Programm wird also nicht viel schneller laufen, wenn du einfach die Priorität höher setzt obwohl sie sowieso gearde aktiv ist.
Du kannst jedoch bestimmen inwiefern Windows die Anwendung bevorzugt wenn sie im hintergrund läuft...
Versteh mich nich falsch, Prozess und Thread Prioritys sind wichtig und sinnvoll, aber idR. bruacht man für "normale" Anwendungen da nichts ändern.
Aber ich weiss ja nicht was du vor hast
Gruss Frederik
|
|
torstenheinze
      
Beiträge: 461
|
Verfasst: Di 04.03.03 18:27
also ich hab mal ein prog gemacht, welches einen string beispiels weise 1.000.000 mal und mehr verschlüsselt. und ich hab fest gestellt, das das mit realtime priorität wirklich schneller geht als im "normal modus"
|
|
OregonGhost
      
Beiträge: 215
|
Verfasst: Di 04.03.03 20:45
Tja, ein Ändern der Priorität in Echtzeit kann nur dann einen Geschwindigkeitsschub bringen, wenn vorher eine andere Anwendung mindestens die gleiche Priorität hatte. Wie FD-83 bereits erwähnte, wenn deine Anwendung aktiv ist (also einen Priority Boost erhält) und keine andere Anwendung eine höhere dynamische Priorität erhält, kannst du mit Realtime Priority auch nichts mehr ändern, außer dass du das System damit zum Abstürzen bringen kannst.
Generell gilt, über Hoch sollte die Priorität nicht gesetzt werden. Und selbst auf Hoch nur, wenn es wirklich unbedingt erforderlich ist (viele Anwendungen überlassen auch dem Benutzer die Einteilung der Priorität).
_________________ Oregon Ghost
---
Wenn NULL besonders groß ist, ist es fast schon wie ein bisschen eins.
|
|
torstenheinze
      
Beiträge: 461
|
Verfasst: Di 04.03.03 20:52
bei meinen applicationen gab's bis heute keine probs, trotz realtime, und außerdem merkt man den unterschied, wenn ich die prioritäten verwende. und abgestürzt ist bei mir noch nichts.
naja, für die dies stört kann man ja eine funktion einbauen, mit der das proggramm nur im idle modus arbeitet.
halt für die die viieeeeeeeeeel zeit haben 
|
|
FD-83
      
Beiträge: 49
|
Verfasst: Di 04.03.03 22:11
@torstenheinze:
Ich weiss ja nicht, was du noch so für Anwendungen geschrieben hast, aber einfach jedes seiner programme auf ne "realtime" Priority zu setzen ist wirklich nicht emopfehlenswert!
Nichtmal der Windows Task Manager lauft auf realtime! Ausserdem: Stell dir mal vor, jedes program würde das machen um möglcihst schnell zu sein. Ruck zuck laufen alle auf realtime und das ist definitiv genauso effektiv wie wenn alle auf niedrig leufen würden  Dann bringen nämlich die Prioritäten nix mehr
Wie gesagt, ich weiss nicht wie essentiell deine Programme sind und was es für Gründe gibt sie auf realtime zu stezen, aber einfach so damits schneller is sollte man das nich machen...
Machs doch wie Winamp. Das läuft standardmässig auf Normal lässt sich aber via schieberegler auf jede belibiege Prozesstufe setzen! (Mal abgesehen davon dass man das auch mit jedem Programm via TaskManager machen könnte  )
Gruss Frederik
|
|
torstenheinze
      
Beiträge: 461
|
Verfasst: Di 04.03.03 22:15
das mache ich bei normalen programmen nie mit realtime, ich lasse das immer so auf normal.
das wo ich das mal das mit realtime gemacht hab, das war ein verschlüsselungsprogramm. und in diesem fall bewürkt es auch was ca. 20% schneller
|
|
Andreas Pfau 
      
Beiträge: 997
|
Verfasst: Mi 05.03.03 17:35
Ja, ich habe auch schon mal mit Realtime rumgetüftelt. Ich neutze das auch nicht wirklich. Nur in 2 Fällen:
- Wenn ich messen will, wie lange eine Prozedur zum rechnen braucht (was man ja im allgemeinem extrem selten macht)
- Wenn ich OpenGL-Vollbild-anwendungen schreibe. Da muss ja wirklich nix im Hintergrund laufen, und da kann man die Priorität ruhig mal um 1-2 über normal setzen. Oder halt, wenn man multithreading einsetzt, da kann es von großer Bedeutung sein.
_________________ Life is a bad adventure, but the graphic is really good!
|
|