![]() |
Synchronisation - CriticalSection?
Hallo,
ein Teil eines Projekts von mir ist, wie mir letztens auffiel etwas schlampig geschrieben. Es gibt zwei Threads, die im Worst ( 8-) ) case dasselbe Eingabe-Formular öffnen und abfragen müssen. Dieses Problem könnte ich lösen, indem ich im Handler, der die Operationen mit diesem Formular verwaltet, eine CriticalSection global deklariere und sie in der Methode, die das Formular aufruft verwende, richtig? Zusätzlich werden in allen möglichen Teilen und von allen möglichen Threads des Programmes Log-Funktionen aufgerufen, die in ein Memo schreiben. Kann ich da genauso mit einer CriticalSection arbeiten? Was kann eigentlich alles passieren, wenn ich das nicht tue und wirklich mal was exakt gleichzeitig aufgerufen wird? Ich höre immer, dass es nicht gut ist, habe aber eigentlich noch nie ein Beispiel gesehen, warum das so ist. |
Re: Synchronisation - CriticalSection?
CriticalSections helfen hier garnichts.
Man ruft in einem Thread kein Formular oder irgendetwas von der VCL direkt auf! Nutzte Synchronize, um auf die VCL/Formulare/Memos aufzurufen oder drauf zuzugreifen. |
Re: Synchronisation - CriticalSection?
Mh, gut. Aber wenn ich verhindern möchte, dass Code zur selben Zeit ausgeführt wird kann ich eine benutzen, oder?
|
Re: Synchronisation - CriticalSection?
Zitat:
|
Re: Synchronisation - CriticalSection?
Zitat:
Es gibt aber auch noch andere Schutz-Varianten: z.B. TSimpleRWSync, welche etwas optimiert sind (gleichzeitiges Lesen erlaubt) Die VCL hat ihre eigene ChriticalSection, an welche man extern nicht rankommt, aber dieses erledigt ja Synchronize für einen. |
AW: Re: Synchronisation - CriticalSection?
Ich bitte um Nachsicht, daß ich meine Erfahrungen in diese alte Diskussion schreibe. Hätte ich diese Diskussion nicht gefunden, hätte ich wohl nach den kritischen Sektionen im Zusammenhang mit der Synchronisation gefragt.
Zitat:
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 04:01 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 by Thomas Breitkreuz