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 Critical Section bei TStringList.Add? (https://www.delphipraxis.net/35234-critical-section-bei-tstringlist-add.html)

Meflin 4. Dez 2004 09:38


Critical Section bei TStringList.Add?
 
Hi,
brauch ich, wenn ich aus mehreren threads gleichzeitig strings in eine TStringList einfüge, eine Critical Section? cih meine eigentlich dürfte da doch nix schiefgehen ausser dass die vielleicht nicht in der richtigen reihenfolge dann drin stehen, aber das würde nix machen! allerdings bin ich mir nicht sicher, da es sich ja um eine schreib-ausführung handelt und die kann man ja nicht gleichzeitig ausführen... also: brauch ich da eine critical section oder nicht?

*MFG*

Luckie 4. Dez 2004 09:41

Re: Critical Section bei TStringList.Add?
 
Eigentlich hast du dir die Antwort schon selber gegeben. ;)

Meflin 4. Dez 2004 09:42

Re: Critical Section bei TStringList.Add?
 
dann nehm ich mal an letzteres :) ich brauch eine...

Chewie 4. Dez 2004 09:43

Re: Critical Section bei TStringList.Add?
 
Generell: Ja.
Denn stell dir folgendes Szenario vor:

Thread A liest die Einträge der Liste aus und speichert sie in eine Datei. Dann kommt Thread B zum Zuge und fügt ein Element an. Dann schreibt Thread A die Einträge in eine Listbox.
Die Folge: Zwei Anweisungen auf die Liste, die aus Sicht des Threads A direkt hintereinander ausgeführt werden, greifen auf zwei unterschiedliche Listen zu!

Je nachdem wie dein Programm aufgebaut ist, kann das egal sein, aber in aller Regel ist es nicht. Und wenn du sowas nicht synchronisierst und irgendwo einen Fehler hast, dan suchst du dich dumm und dämlich und findest ihn nicht. Mach das Schreiben also ruhig in eine Critical Section rein. Performancem#ßig verlierste da auch nix, das das Schreiben innerhalb weniger Takte erledigt sein sollte.


Alle Zeitangaben in WEZ +1. Es ist jetzt 08:05 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