Thema: Delphi TThread.Synchronize

Einzelnen Beitrag anzeigen

Der schöne Günther

Registriert seit: 6. Mär 2013
6.110 Beiträge
 
Delphi 10 Seattle Enterprise
 
#7

AW: TThread.Synchronize

  Alt 15. Mär 2013, 07:37
Vielen Dank für die Antworten!

Wichtig ist hierbei auch der Blick in die Dokumentation TThread.Synchronize.
Zitat von TThread.Synchronize:
Führt einen Methodenaufruf im Haupt-Thread aus.
Also egal von wo auch immer das ausgeführt wird, es wird synchron zum Hauptthread ausgeführt.
Wenig später heißt es jedoch:
Zitat:
Hinweis: Wenn Sie die statische Version der Methode Synchronize mit nil/NULL als der erste Parameter verwenden, wird die von AMethod referenzierte Methode im Haupt-Thread synchronisiert.
Das hatte ich bislang so interpretiert, als könnte ich mit der gleichnamigen Klassenmethode angeben, von welchem Thread aus der Aufruf tatsächlich stattfindet. Denn wozu gebe ich einen Thread sonst überhaupt als Parameter an?

Wichtig ist hier, das Synchronize so lange wartet, bis der Hauptthread sich drum kümmern kann. Es geht also Zeit flöten.
Gut (und beruhigend) zu wissen. Aber gerade hier beschleicht mich jetzt das Gefühl, dass ich meinen TThread noch mit irgendwas hätte ausstatten müssen, um darauf überhaupt (und auch wo) zu reagieren - Eine Art kümmereDichUmSynchronize-AufrufeVonAnderenThreads() .


Um kritische Abschnitte gibt es dann wohl wieder keinen Weg drum herum, ich möchte nicht, dass die Funktion "von außen" aufgerufen/angefordert wird, wenn der Thread selbst auch gerade in dieser Funktion wühlt. Jetzt bin ich mal gespannt, was TCriticalSection bereithält...
  Mit Zitat antworten Zitat