Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Win32/Win64 API (native code) (https://www.delphipraxis.net/17-win32-win64-api-native-code/)
-   -   Delphi Threads synchronisieren? (https://www.delphipraxis.net/40034-threads-synchronisieren.html)

Borti 10. Feb 2005 08:23


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

Sanchez 10. Feb 2005 08:38

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

Assarbad 10. Feb 2005 10:33

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.

NicoDE 10. Feb 2005 10:46

Re: Threads synchronisieren?
 
Zitat:

Zitat von Assarbad
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.

Selbst dann sollte man die entsprechenden Funktionen verwenden (sonst werden die Caches der CPUs u.U. nicht synchronisiert).


Alle Zeitangaben in WEZ +1. Es ist jetzt 21:34 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz