![]() |
AW: TCriticalSection: Einmal global oder immer lokal erstellen?
Zitat:
Ich dachte immer, die sollen so schnell als möglich ihren Job machen und da ist das Ausbremsen doch völlig kontraproduktiv. Zitat:
|
AW: TCriticalSection: Einmal global oder immer lokal erstellen?
Zitat:
Verstehe ich das richtig, dass in dem Beispiel "nur" der Codeabschnitt im Getter und Setter durch die CS gelockt wird und nicht das Feld "fMyValue"? Wenn dein Beispiel "TMyClass" von TThread abgeleitet wäre, müsste man demnach auch klassenintern (besonders in TThread.Execute) darauf achten, dass man immer über die Property auf fMyValue zugreift und nie direkt. Richtig? |
AW: TCriticalSection: Einmal global oder immer lokal erstellen?
Zitat:
|
AW: TCriticalSection: Einmal global oder immer lokal erstellen?
Zitat:
Das muss aber nicht ausschließlich über die Property erfolgen.
Delphi-Quellcode:
procedure TMyThread.Execute;
begin MyValue := 'geschützt'; fMyValue := 'NICHT geschützt - es droht eine AV'; CS.Enter; try fMyValue := ''; for i := 1 to 5 do fMyValue := fMyValue + 'geschützt'; finally CS.Leave; end; end; |
AW: TCriticalSection: Einmal global oder immer lokal erstellen?
Ich benutze auch immer gern den TMultiReadExclusiveWriteSynchronizer - langer Name ;)
Der hat den Vorteil, dass sich gleichzeitig Lesen lässt, aber das Schreiben exklusiv erfolgen muß - naja, der Name verräts eigentlich auch ^^ Wichtig ist nur, dass man _immer_!!! entweder den Lese- oder den Schreibzugriff aufrufen darf. Ansonsten kann es zu deadlocks kommen. |
AW: TCriticalSection: Einmal global oder immer lokal erstellen?
Zitat:
![]() Wenn sich da eine fertige/erprobte Klasse anbietet, sollte man sie auch nutzten :thumb: |
Alle Zeitangaben in WEZ +1. Es ist jetzt 12:28 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-2025 by Thomas Breitkreuz