AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Win32/Win64 API (native code) Delphi Priorität von Prozessen ändern
Thema durchsuchen
Ansicht
Themen-Optionen

Priorität von Prozessen ändern

Ein Thema von Borti · begonnen am 15. Aug 2004 · letzter Beitrag vom 2. Sep 2004
Antwort Antwort
Seite 2 von 3     12 3      
DaFox

Registriert seit: 31. Jul 2003
Ort: Kippenheim
90 Beiträge
 
#11

Re: Priorität von Prozessen ändern

  Alt 19. Aug 2004, 20:48
Hi.

In Deinem Fall ist das OpenProcess wohl witzlos, denke ich.

Schau' Dir mal GetCurrentProcess() an.
Wenn Du unbedingt die ProcessId haben willst, dann GetCurrentProcessId().

Gruß,
Markus
if u cn rd ths u cn bcm a c prgmr!
  Mit Zitat antworten Zitat
Tubos

Registriert seit: 25. Feb 2004
Ort: Yspertal (Niederösterreich)
1.014 Beiträge
 
Delphi 7 Personal
 
#12

Re: Priorität von Prozessen ändern

  Alt 19. Aug 2004, 21:02
Zitat:
Ich brauche für einen Thread meines programms den prozessor über einen Zeitraum von ein paar Minuten ohne Unterbrechung für mich alleine
Dazu eine Frage von mir:
Hat man dann wirklich 100% der CPU für sich?
Das System braucht doch auch Ressourcen!
Lukas
  Mit Zitat antworten Zitat
Vjay

Registriert seit: 2. Dez 2003
Ort: Berlin/Eschede
481 Beiträge
 
Delphi 7 Professional
 
#13

Re: Priorität von Prozessen ändern

  Alt 19. Aug 2004, 22:02
Windows ist kein Realtime-Betriebssystem.
Für deine Zwecke gibt es einige Unixe, denn du kannst nie sicherstellen dass du auf 100% cpu läufst, Interrupts erzeugen wie der Name schon sagt auch Verzögerungen.

Es ist unter windows absolut unmöglich 100% zeitnah zu arbeiten. Du könntest dies nur durch externe Hardware die die Werte zwischenspeichert erreichen. Ansonsten wird es dir durch Prioritätserhöhung nur gelingen dich einem Realtime - System anzunähern, aber du wirst es nicht erreichen können .
Wer später bremst ist eher tot.
  Mit Zitat antworten Zitat
Vjay

Registriert seit: 2. Dez 2003
Ort: Berlin/Eschede
481 Beiträge
 
Delphi 7 Professional
 
#14

Re: Priorität von Prozessen ändern

  Alt 19. Aug 2004, 22:10
Achja, nochwas au weia au weia. Deine Abfragefunktion, ob die Lichtschranke unterbrochen wurde erzeugt ja auch eine Verzögerung + Das auslesen der Uhrzeit, die ja glaube ich auch auf 22msec ungenau ist.

Also denke mit Windows (98?!!) wird es das Beste sein den Thread auf Realtime zu setzen, und die Messung zwischen dem Unterbrechen der 2 Lichtschranken mehrmals durchzuführen. Denke dann wirst du einen guten Durchschnittswert erhalten.

Du hast ja schließlich eine Verzögerng bei der Start und bei der Ziel-Lichtschranke, das dürfte sich dann in der Summe aufheben.

Mfg
Vjay
Wer später bremst ist eher tot.
  Mit Zitat antworten Zitat
Tubos

Registriert seit: 25. Feb 2004
Ort: Yspertal (Niederösterreich)
1.014 Beiträge
 
Delphi 7 Personal
 
#15

Re: Priorität von Prozessen ändern

  Alt 20. Aug 2004, 13:09
Zitat:
Windows ist kein Realtime-Betriebssystem.
Für deine Zwecke gibt es einige Unixe, denn du kannst nie sicherstellen dass du auf 100% cpu läufst, Interrupts erzeugen wie der Name schon sagt auch Verzögerungen.
Danke!

Zitat:
Deine Abfragefunktion, ob die Lichtschranke unterbrochen wurde erzeugt ja auch eine Verzögerung + Das auslesen der Uhrzeit, die ja glaube ich auch auf 22msec ungenau ist.
QueryPerformanceCounter, QueryPerformanceFrequency heißt die Lösung
außerdem:
Zitat:
ich hab einen Wagen, der an diversen Lichtschranken vorbei fährt und ich muss geschwindigkeiten, beschleunigung etc. errechnen
Wenn er beim Start und beim Ziel dieselbe Verzögerung hat, ist das kein Problem.
Doch wenn beim Start gerade eine winzige Unterbrechung (durchs System) ist, und beim Ziel keine, dann ist es wieder ungenau...
Aber wofür braucht man bei einem Wagen, der an Lichtschranken vorbeifährt, eine Genauigkeit im ms-Bereich??
Lukas
  Mit Zitat antworten Zitat
Borti

Registriert seit: 11. Okt 2003
151 Beiträge
 
#16

Re: Priorität von Prozessen ändern

  Alt 22. Aug 2004, 19:04
Zitat:
Das System braucht doch auch Ressourcen!
so, ich hab das ganze mal mit folgendem Code getestet:
Code:
procedure TForm1.Button1Click(Sender: TObject);
var h1,h2:THandle;
    s:Tstrings;
    i:integer;
begin
  h1:=GetCurrentProcess;
  h2:=GetCurrentThread();
  if not SetPriorityClass(h1,REALTIME_PRIORITY_CLASS) then showmessage('Fehler!');
  if not SetThreadPriority(h2,THREAD_PRIORITY_TIME_CRITICAL) then showmessage('Fehler!');
  s:=TStringList.Create;
  for i:=0 to 1000000 do begin
   s.Add(inttostr(GetTickCount));
  end;
  s.SaveToFile('...\CPU-Test.txt');
  s.Free;
  Form1.Close;
end;
Die Datei CPU-Test.txt hab ich als Attachment angehängt. ich hab aber nur Abweichungen von 5msec. festgestellt. Eigentlich müssten es doch 22 sein!
Angehängte Dateien
Dateityp: txt cpu-test.txt (512,0 KB, 18x aufgerufen)
Ich hab's versucht
(auch wenn's nicht so aus sieht)
  Mit Zitat antworten Zitat
Tubos

Registriert seit: 25. Feb 2004
Ort: Yspertal (Niederösterreich)
1.014 Beiträge
 
Delphi 7 Personal
 
#17

Re: Priorität von Prozessen ändern

  Alt 22. Aug 2004, 19:59
Zitat:
Die Datei CPU-Test.txt hab ich als Attachment angehängt. ich hab aber nur Abweichungen von 5msec. festgestellt. Eigentlich müssten es doch 22 sein!
GetTickCount liefert die ms seit Systemstart und hat eine Genauigkeit von 5 ms.
Das hat nichts mit den Prozessen und den 22-ms-Zeitscheiben zu tun.

Wieso willst du den Prozess eigentlich auf Echtzeit setzen, wenn du mit sowas ungenauem wie Gettickcount arbeitest?
edit:
achso, das war nur als test...ok
Lukas
  Mit Zitat antworten Zitat
Borti

Registriert seit: 11. Okt 2003
151 Beiträge
 
#18

Re: Priorität von Prozessen ändern

  Alt 25. Aug 2004, 16:21
Aber, wenn mein thread kurz für einen anderen unterbrochen wird, dann müsste ich doch dann eine Lücke von 22msec. haben, oder?
Mit QueryPerformanceCounter ist das so eine Sache, da das Programm auch auf rRechnern mit Win32 laufen soll.
Gruß,
Borti
Ich hab's versucht
(auch wenn's nicht so aus sieht)
  Mit Zitat antworten Zitat
Benutzerbild von nailor
nailor

Registriert seit: 12. Dez 2002
Ort: Karlsruhe
1.989 Beiträge
 
#19

Re: Priorität von Prozessen ändern

  Alt 25. Aug 2004, 16:26
datenkompression in aktion:
Angehängte Dateien
Dateityp: rar cpu-test.rar (481 Bytes, 13x aufgerufen)
Michael N.
http://nailor.devzero.de/code/sharpmath/testing/ --- Tests, Feedback, Anregungen, ... aller Art sehr willkommen!
::: don't try so hard - it'll happen for a reason :::
  Mit Zitat antworten Zitat
Borti

Registriert seit: 11. Okt 2003
151 Beiträge
 
#20

Re: Priorität von Prozessen ändern

  Alt 29. Aug 2004, 08:57
irgendwie versteh ich nicht, was du damit sagen willst.
Ich hab's versucht
(auch wenn's nicht so aus sieht)
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 2 von 3     12 3      


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 01:20 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz