![]() |
Threads synchronisieren?
Guten Morgen!
Mein Programm spaltet einen Nebenthread ab, der mit dem Hauptthread über eine Variable kommuniziert. (Nebenthread schreibt, Hauptthread liest von der Variablen) Muss ich in diesem Fall Synchronisieren? Gruß, Borti |
Re: Threads synchronisieren?
Ja solltest du. Sonst könnte passieren, das dein Hauptthread die Variable liest während der Nebenthread gerade schreibt. Dadurch ist nicht gewährleistet, dass der Wert zum Lesezeitpunkt konsistent ist. Pack lesen und schreiben einfach in die selbe CriticalSection.
grüße, daniel |
Re: Threads synchronisieren?
Es kommt auch immer ein Stück weit auf die Variable an (zB Integertypen oder komplexe Records). Bei ersterem würde ich sofort die Interlocked*-Funktionen benutzen, weil die einfach dafür gemacht sind. Ansonsten eine Criticalsection oder ein anderes Ausschlußobjekt.
Aber solange nicht mehrere Thread schreibend zugreifen, kann man in vielen Fällen komplett auf eine Synchronisation verzichten - es sei denn es handelt sich um Variablen die größer als <Integrale CPU-Bitzahl> oder getrennt (zB 4 einzelne Bit) sind. |
Re: Threads synchronisieren?
Zitat:
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 09:00 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