![]() |
Priorität einer Anwendung
Hallo,
wir möchten Echtzeitanwendungen schreiben und benötigen dafür eine Programm, das alle anderen Prioritätsmaässig übertrifft. Wie kann man das realisieren. Rainer |
Re: Priorität einer Anwendung
[dp]echtzeit*[/dp]
z.B. ![]() ![]() Aber was das "Echtzeit" angeht .. hier gibt es auch schon einige Diskusionen dazu ... ist auf dem Meisten Rechneren/Betriebssystemen nicht möglich ;) |
Re: Priorität einer Anwendung
Wahrscheinlich habt ihr es dann auch mit Thread's zu tun ...
Dann einfach mit der SetThreadPriority die Priorität einstufen. |
Re: Priorität einer Anwendung
Hallo,
ich weiss nicht ob ich chinesisch rede, aber ich will die Priorität meiner eigenen Anwendung ändern und zwar zur Laufzeit. Keine Threads oder sonstiges. Rainer |
Re: Priorität einer Anwendung
Ermittel den Prozess und stelle die Priorität folgendermaßen ein:
![]() Btw: Dein Umgangston ist immer gleich so aggresiv, das muss nicht sein. :) |
Re: Priorität einer Anwendung
Und wie wäre es dann damit?
Die Suche liefert oftmals überraschende Ergebnisse :warn: [dp]priorität, anwendung[/dp] >> ![]() >> ![]() PS: Matze + "Umgangston" = rechthaben (ich stimme ihm ja sooo selten zu ^^) |
Re: Priorität einer Anwendung
Zitat:
![]() Zitat:
Wo und wie soll das Programm denn zum Einsatz kommen? Du solltest ber+ücksichtigen dass die Prioritätsklasse REALTIME_PRIORITY_CLASS das System so ziemlich unbrauchbar macht und noch nicht mal mehr der Taskmanager zur Not aufgerufen werden kann im schlimmsten Fall. |
Re: Priorität einer Anwendung
@runger,
zu meiner Verteidigung :-D möcht ich nur sagen : Wenn jemand eine professionelle Zitat:
Das Zitat:
|
Re: Priorität einer Anwendung
Lieber Luckie,
ich hatte gefragt wie man zur Laufzeit die Priorität des eigenen laufenden Prozesses ändern kann. Genauer: Wir benutzen einen Timer, der sekündlich läuft, um einen Rundsteuertagesfahrplan (was das ist kann ich dir privat erklären) auszuwerten! Das heisst: jede Sekunde wird nachgeschaut ob im Tagesfahrplan ein Eintrag mit der aktuellen Uhrzeit steht. Unser Problem besteht darin, dass wenn auf dem Rechner ein zweites oder drittes Programnm läuft, der Timer verspätet ausgelöst wird und damit die aktuelle Sekunde bereits verstrichen ist. Eine Auslagerung in einen separaten Thread kommt aus anderen Gründen nicht in Frage. Bemerkung: Mir ist schon öfter aufgefallen, dass du sehr persönliche (und auch verletzende)Antworten verteilst. Lass das bitte. Rainer |
Re: Priorität einer Anwendung
Zitat:
Zitat:
Zitat:
Zitat:
Greetz alcaeus |
Re: Priorität einer Anwendung
@runger,
Zitat:
Zitat:
Wer erzeugt den Eintrag im Tagesfahrplan. Und wo (Medium (( Datenbank, Arbeitsspeicher, Hardware-Schnittstelle)) ) wird es eingetragen. Zitat:
Schau mal im google ![]() Zitat:
Ansonsten kann man es nur tolerieren. Zitat:
Viel schlimmer ist dein Zitat "Ich weiss was ich kann! Du auch?" ... und dann erzählst du was von Echtzeit im Sekundentakt :gruebel: |
Re: Priorität einer Anwendung
Zitat:
|
Re: Priorität einer Anwendung
Hallo,
das Problem hat sich erledigt! SetPriorityClass(GetCurrentProcess,DWORD(THREAD_PR IORITY_IDLE)); Diesen Befehl in oncreate oder onshow des ersten Fensters fertig. Rainer An himutsu: vielen Dank! Dein beitrag hat mich weiter gebracht. Ist halt nicht immer so ganz einfach mit der Sucherei! |
Re: Priorität einer Anwendung
Also, wenn das so ist, dann last doch
a: das Programm in einer Schleife laufen, oder b: stellt den Timer auf 20 ms ein (ist so das Kleinste, was TTimer kann) (b ist dabei ja auch sowas wie eine Schleife ^^)
Delphi-Quellcode:
var MerkeZeit: irgendeinIntegertyp := 0;
Repeat // die Schleife ... oder Begin der Timerprozedur If MerkeZeit = AktuelleZeit Then Countinue; // oder Exit, bei der Prozedure MerkeZeit := AktuelleZeit; ... was auch immer (etwa Sekündlich) Until ; // die Schleife ... oder End der Timerprozedur Wenn Zeiten ni´ch in Sekunden vorhanden sind, dann muß halt entsprechend scaliert werden z.B. Zeiten in Millisekunden:
Delphi-Quellcode:
If MerkeZeit = AktuelleZeit div 1000 Then Countinue; // oder Exit, bei der Prozedure
MerkeZeit := AktuelleZeit div 1000; Wenn die Schleife also oftgenug aufgerufen wird, dann ist die Chance geringer, dass etwas verpasst wird. Oder ihr macht es so, wie bisher, aber merkt euch die letzte Zeit, als euer Code ausgeführt wurde, wenn ihr dann das mit der aktuellen Zeit vergleicht, wisst ihr ja, wieviele der "letzten" Sekunden noch bearbeitet werden müssen, somit wird auch nichts vergessen. Wie gesagt, Echtzeit gibt es bei Windows nicht und ihr müßt immer mal damit rechnen, dass mal euer Programm ein bissl ins stocken kommt. [edit] wieso ist der Beitrag nicht das 1. Mal eingefügt wurde? (zum Glück war alles nochim Speicher -.-'' ) [] Bitte bitte ... manchmal sieht man halt den Wald vor Bäumen nicht ;) |
Re: Priorität einer Anwendung
Zitat:
![]() Zitat:
Zitat:
Oder ich würde einen separaten Thread nehmen (Es würde mich ziemlich interessieren, warum das bei dir nicht geht.), denn ich immer mit Sleep(1000) lahmlege. Aber einen Timer würde ich auf keinen Fall nehmen. Windows ist nachrichtenbasierend und kann so mit nie ein Echtzeitsystem sein. Selbst wenn du die Priorität deines Prozesses hochsetzt.
Delphi-Quellcode:
Der Cast nach DWORD ist überflüssig, THREAD_PRIORITY_IDLE ist bereits ein DWORD. Aber kannst du mir mal erklären, was du da machst? Die Prioritätsklassen für die API Funktion sind:
SetPriorityClass(GetCurrentProcess,DWORD(THREAD_PRIORITY_IDLE));
Zitat:
![]() Zitat:
![]() Zitat:
Zitat:
|
Re: Priorität einer Anwendung
Hallo Luckie,
bitte lies meine Frage durch und die Antworten die ihr gegeben habt. Dies hätte voll und ganz genügt: SetPriorityClass(GetCurrentProcess,DWORD(THREAD_PR IORITY_IDLE)); (oder einen link darauf) himatsu hat das gekonnt! Rainer |
Re: Priorität einer Anwendung
Zitat:
Geschlossen, alles weitere per PN. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 18:25 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