![]() |
Priorität von Prozessen ändern
Hallo!
Ich brauche für einen Thread meines programms den prozessor über einen Zeitraum von ein paar Minuten ohne Unterbrechung für mich alleine. Die bisherige idee ist, dass ich einfach meinem Thread die höchste priorität von 31 erteile. ich weiß, mir wurde schon hier im Forum davon abgeraten, aber ich komm nicht drumrum. erstmal bevor ich mich in's "Vergnügen" stürze: Gibt es noch etwas anderes, dass auf der stufe 31 arbeitet und wenn ja, was? Gruß, Borti |
Re: Priorität von Prozessen ändern
Was ist sStufe "31"? Wenn es TIMECRITICAL ist dann würde ich wirklich DRINGENST davon abraten und ich kann mir keinen Prozess vorstellen der über Minuten ohne Unterbrechnung die CPU beanspruchen können muss. Der Grund ist klar, selbt Systemthreads laufen höchstens mit der Priorität HOCH bzw. HÖHER ALS NORMAL.
Also warum darf dein Prozess nicht unterbrochen werden? Wenn wir hier von Prozess reden, dann reder wir aber doch wohl vone einem abgespaltenen Thread innerhalb des Hauptthreads der nicht unterbrochen werden darf oder? PS: Sollte es noch so ein Programm von jemandfen auf dem Rechner laufen, der davon überzeugt ist, dass sein Thread nicht unterbrochen werden dürfte und der dann auch mit TIMECRITICAL läuft, dann wird auch dein wharscheinlich Thread unterbrochen. |
Re: Priorität von Prozessen ändern
Vielleicht hilt dir das:
![]() Aber mich würde auch interessieren für was du das brauchst? |
Re: Priorität von Prozessen ändern
Hallo!
(hi Luckie! ich kommm grad von deinem Tutorial) also, ich schreib mir grad ein porgramm zum Erfassen von Messwerten. Das ganze muss natürlich kontinuierlich vor sich gehen und ich kann nicht drauf hoffen, dass ich ab und zu eine Prozessorzeit von nur 20msec. zugeteilt kriege. Das programm selber besteht aus einem hauptthread, der beim Messen eh nur wartet(und somit keine Rechenzeit anfordert), und einem nebenthread zum Messen. Um das hinzukriegen wollt ich halt die priorität des Prozesses auf REAL_TIME_PRIORITY_CLASS und die des Nebenthreads auf THREAD_PRIORITY_TIME_CRITICAL setzen. Wisst ihr noch ein Tool, mit dem ich die pioritätsstufen der prozesse und deren Threads ermitteln kann und welche davon dann Zeit am CPU beantragen? Gruß, Borti |
Re: Priorität von Prozessen ändern
Zitat:
Ich bin mir nicht sicher, aber ich tippe mal auf soetwas wie ![]() Beachte folgendes: - Wenn sich dein Programm aufhängt musst du den Computer neustarten...es sei denn, du setzt die Delphi IDE auch auf Echtzeit. - Das Programm kann dann nur mit Adminstratorrechten ausgeführt werden. - Wenn dein Programm etwas zu rechnen hat und alle anderen Programme nicht, dann bekommt es automatisch die ganze Rechenleistung (ungefähr... ;) ) und nicht "ab und zu mal 20 ms". Dazu noch eine Frage von mir an alle: Sind die Zeitscheiben immer 22 ms lang oder können die auch unterschiedlich sein? edit: sry, habe deine Frage nicht ganz richtig verstanden. Zitat:
|
Re: Priorität von Prozessen ändern
Über die Konsequenzen mit dem Reset bin ich mir bewusst.
Aus neugier würd mich aber interessieren, was sonst noch so an Prozessen auf meinem System läuft un mitwelcher priorität. leider hab ich nur win98 und somit wird das bei mir nicht im taskmanager angezeit. bei dem Win32 taskmanagern ist darüber hinaus nur die Priorität der Prozesse zu erkennen nicht die der enthaltenen Threads. Daher hab ich nach einem Programm dafür gefragt. Gruß, Borti |
Re: Priorität von Prozessen ändern
Windows 98? Ja, da gibts das nicht.
Und du brauchst auch keine Adminrechte zum Priorität erhöhen, weil es keine Benutzerrechte gibt ;) Was sind das denn für Messdaten? Und in welchem Intervall zeichnest du sie auf? |
Re: Priorität von Prozessen ändern
ich hab einen Wagen, der an diversen Lichtschranken vorbei fährt und ich muss geschwindigkeiten, beschleunigung etc. errechnen. Ich wollt dafür das best mögliche Intervall beim Aufzeichnen (20msec. ist fast schon zu lang)
ich hab schon mal rumprobiert und SetPriorityClass gibt mir den Wert false zurück!
Code:
What to do?
Setpriorityclass(application.handle,HIGH_PRIORITY_CLASS)
gruß, Borti |
Re: Priorität von Prozessen ändern
Moin Borti,
Application.Handle ist das Handle des Hauptfensters der Anwendung, Du brauchst hingegen das Handle auf einen Prozess (OpenProcess). Lies Dir am Besten noch mal die Dokumentation zu der Funktion genau durch. |
Re: Priorität von Prozessen ändern
Ich muss noch mal eure Hilfe in Anspruch nehmen. :lol:
soweit bin ich jetzt mit dem Code:
Code:
Aber, was für setze ich für dwProcessId ein?
var H:Thandle;
begin H:=openprocess(PROCESS_SET_INFORMATION,false,dwProcessId); if not SetPriorityClass(H,REALTIME_PRIORITY_CLASS) then showmessage('Fehler!'); end; Danke, Borti |
Alle Zeitangaben in WEZ +1. Es ist jetzt 08:23 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz