Einzelnen Beitrag anzeigen

Benutzerbild von jaenicke
jaenicke

Registriert seit: 10. Jun 2003
Ort: Berlin
9.648 Beiträge
 
Delphi 11 Alexandria
 
#2

AW: TThread: Daten von Mainthread holen --> Synchronize notwendig?

  Alt 18. Dez 2024, 07:29
Du musst den Zugriff absichern, aber du kannst auch einfach TMonitor verwenden:
Delphi-Quellcode:
TMonitor.Enter(MyThread); // oder ein anderes Objekt
try
  MyThread.Value := 'Test';
finally
  TMonitor.Exit(MyThread);
end;
Wenn du jeden Zugriff auf den Wert (Schreiben + Lesen) so absicherst, brauchst du kein Synchronize, was viel aufwendiger ist.

Synchronize brauchst du nur, wenn du etwas wirklich im Kontext eines anderen Threads durchführen musst. Dazu zählt z.B. eine Callback-Funktion, die aus einem Threrad aufgerufen wird, und z.B. auf eine Datenbank oder die GUI zugreifen möchte. Wenn du lediglich die Zugriffe absichern musst, ist das nicht nötig.

Und wenn ein Wert oft gelesen, aber nur selten geschrieben wird, gibt es noch den TMultiReadExclusiveWriteSynchronizer, der dies optimiert. Da ist dann lediglich die (seltene) Schreiboperation teuer, aber das Lesen geht schnell.
Sebastian Jänicke
AppCentral

Geändert von jaenicke (18. Dez 2024 um 07:33 Uhr)
  Mit Zitat antworten Zitat