AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Win32/Win64 API (native code) Delphi Critical Section bei TStringList.Add?
Thema durchsuchen
Ansicht
Themen-Optionen

Critical Section bei TStringList.Add?

Ein Thema von Meflin · begonnen am 4. Dez 2004 · letzter Beitrag vom 4. Dez 2004
Antwort Antwort
Benutzerbild von Meflin
Meflin

Registriert seit: 21. Aug 2003
4.856 Beiträge
 
#1

Critical Section bei TStringList.Add?

  Alt 4. Dez 2004, 09:38
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*
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#2

Re: Critical Section bei TStringList.Add?

  Alt 4. Dez 2004, 09:41
Eigentlich hast du dir die Antwort schon selber gegeben.
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
Benutzerbild von Meflin
Meflin

Registriert seit: 21. Aug 2003
4.856 Beiträge
 
#3

Re: Critical Section bei TStringList.Add?

  Alt 4. Dez 2004, 09:42
dann nehm ich mal an letzteres ich brauch eine...
  Mit Zitat antworten Zitat
Chewie

Registriert seit: 10. Jun 2002
Ort: Deidesheim
2.886 Beiträge
 
Turbo Delphi für Win32
 
#4

Re: Critical Section bei TStringList.Add?

  Alt 4. Dez 2004, 09:43
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.
Martin Leim
Egal wie dumm man selbst ist, es gibt immer andere, die noch dümmer sind
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 22:19 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