AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Sonstige Fragen zu Delphi Delphi mehrere Befehle garantiert ohne Unterbrechung ausführen
Thema durchsuchen
Ansicht
Themen-Optionen

mehrere Befehle garantiert ohne Unterbrechung ausführen

Ein Thema von iphi · begonnen am 19. Okt 2009 · letzter Beitrag vom 19. Okt 2009
Antwort Antwort
iphi

Registriert seit: 13. Feb 2009
262 Beiträge
 
Delphi 7 Personal
 
#1

mehrere Befehle garantiert ohne Unterbrechung ausführen

  Alt 19. Okt 2009, 10:24
Hallo,

wie kann ich sicherstellen, dass einige zeitkritische Befehle in meinem Delphiprogramm im VCL-Hauptthread en bloc, also garantiert ohne Unterbrechungen durch das Betriebssystem/fremde Programme und durch Threads im eigenen Programm abgearbeitet werden?

-Helfen critical sections weiter?
-Muss ich kurzzeitig die Priorität meines Programmes erhöhen?
-???

Gruß, Thomas
  Mit Zitat antworten Zitat
Benutzerbild von jfheins
jfheins

Registriert seit: 10. Jun 2004
Ort: Garching (TUM)
4.579 Beiträge
 
#2

Re: mehrere Befehle garantiert ohne Unterbrechung ausführen

  Alt 19. Okt 2009, 10:29
Gar nicht.

Du kannst zwar diene Priorität auf Echtzeit stellen, aber 1. Ist das sehr unschön und 2. scheitert das, wenn ein anderer Prozess ebenfalls Echtzeit-Priorität anfordert.
  Mit Zitat antworten Zitat
Benutzerbild von JamesTKirk
JamesTKirk

Registriert seit: 9. Sep 2004
Ort: München
604 Beiträge
 
FreePascal / Lazarus
 
#3

Re: mehrere Befehle garantiert ohne Unterbrechung ausführen

  Alt 19. Okt 2009, 10:32
Hi!

Um gegen Threads im eigenen Programm abzusichern helfen CriticalSections, das heißt aber nicht, dass diese anderen Threads nicht auch laufen. Auch kannst du nichts dagegen machen, dass das Betriebssystem einen anderen Thread/Prozess als aktiv auswählt (das Betriebssystem hat hier die absolute Oberhand). Und wenn das schon nicht genug ist, dann denk mal an Multicore-Systeme, in denen IMMER mindestens zwei Threads (je nach Anzahl der Cores) laufen.

So... nachdem die Unmöglichkeit einer solchen Idee dargelegt wurde, jetzt eine Gegenfrage:

Was willst du denn genau machen? Vielleicht gibt es eine bessere Möglichkeit als "Ich will alle CPUs für mich und nur für mich allein"

Edit: Roter Kasten gesehen und (auf Grund einer verschiedenen Thematik der Antwort) ignoriert.

Gruß,
Sven
Sven
[Free Pascal Compiler Entwickler]
this post is printed on 100% recycled electrons
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.063 Beiträge
 
Delphi 12 Athens
 
#4

Re: mehrere Befehle garantiert ohne Unterbrechung ausführen

  Alt 19. Okt 2009, 11:04
Wie lange dauern denn diese Befehle?

und was sind das für welche ... bzw was machen die, daß es soooo wichtig ist, daß sie zusammenbleiben?


setze einfach mal ein Sleep(0) davor, dann wird an dieser Stelle die Abarbeitung an andere Threads/Prozesse abgedeben
und danach laufen die nächsten Befehle in einem neuen Zeitfenster an und da sie dann das komplette Fenster und damit die maximale Zeit ur Verfügung haben, ist dort die Wahrscheinlichkeit groß, daß sie auch unterbrechungsfrei laifen (wenn sie nicht länger als ihr Zeitfenster brauchen).

Und Critical-Sections bringen garnichts, da andere Anwendungen davon garnichts mirbekommen.



Die Thread-/Prozesspriorität kann man zwar erhöhen
und dieses würde theoretisch das verfügbare Gesamtzeitspanne für die Abarbeitung vergrößern, aber es ist dennoch nicht sichergestellt, daß diese Befehle dennoch nicht getrennt werden.

- z.B. kann diese Befehlsgruppe dann immernoch kurz vor Ende erst gestartet werden
(Lösung sehe oben)

- und dann ist nicht bekannt, wie Windows die Reihenfolge und Abarbeitung plant,
demnach kann auch bei extrem hoher Prozeßpriorität das mögliche Zeitfenster sich nicht vergrößern, sondern es könnte sich auch nur die Häufigkeit erhöhen und es könnte demnach sein, daß die Prioritätsänderung diesbezüglich überhaupt nichts bringt.
Neuste Erkenntnis:
Seit Pos einen dritten Parameter hat,
wird PoSex im Delphi viel seltener praktiziert.
  Mit Zitat antworten Zitat
Antwort Antwort


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 06:26 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