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.