Delphi-PRAXiS
Seite 1 von 3  1 23      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Win32/Win64 API (native code) (https://www.delphipraxis.net/17-win32-win64-api-native-code/)
-   -   Delphi Priorität von Prozessen ändern (https://www.delphipraxis.net/27746-prioritaet-von-prozessen-aendern.html)

Borti 15. Aug 2004 10:43


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

Luckie 15. Aug 2004 12:32

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.

moritz 15. Aug 2004 13:11

Re: Priorität von Prozessen ändern
 
Vielleicht hilt dir das: http://swissdelphicenter.ch/de/showcode.php?id=387
Aber mich würde auch interessieren für was du das brauchst?

Borti 15. Aug 2004 14:56

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

Tubos 15. Aug 2004 15:12

Re: Priorität von Prozessen ändern
 
Zitat:

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

Ich bin mir nicht sicher, aber ich tippe mal auf soetwas wie MSDN-Library durchsuchenSetProcessPriority.

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:

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?
Der normale Windows Task-Manager!

Borti 15. Aug 2004 15:24

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

Tubos 15. Aug 2004 15:29

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?

Borti 16. Aug 2004 19:55

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:
Setpriorityclass(application.handle,HIGH_PRIORITY_CLASS)
What to do?
gruß,
Borti

Christian Seehase 16. Aug 2004 20:19

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.

Borti 19. Aug 2004 20:45

Re: Priorität von Prozessen ändern
 
Ich muss noch mal eure Hilfe in Anspruch nehmen. :lol:
soweit bin ich jetzt mit dem Code:
Code:
var H:Thandle;
begin
  H:=openprocess(PROCESS_SET_INFORMATION,false,dwProcessId);
  if not SetPriorityClass(H,REALTIME_PRIORITY_CLASS)
   then showmessage('Fehler!');
end;
Aber, was für setze ich für dwProcessId ein?
Danke,
Borti


Alle Zeitangaben in WEZ +1. Es ist jetzt 08:23 Uhr.
Seite 1 von 3  1 23      

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