AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Object-Pascal / Delphi-Language Delphi TList in Thread synchronisieren (CriticalSection)

TList in Thread synchronisieren (CriticalSection)

Offene Frage von "Zacherl"
Ein Thema von Zacherl · begonnen am 2. Feb 2010 · letzter Beitrag vom 2. Feb 2010
 
Benutzerbild von Zacherl
Zacherl

Registriert seit: 3. Sep 2004
4.629 Beiträge
 
Delphi 10.2 Tokyo Starter
 
#1

TList in Thread synchronisieren (CriticalSection)

  Alt 2. Feb 2010, 10:03
Hey,

ich habe ein kleines Problem. Und zwar habe ich eine von TThread abgeleitete Klasse, welche in einer Schleife Daten aus einer Liste bearbeitet:
Delphi-Quellcode:
while not Terminated do
begin
  for I := 0 to FList.Count - 1 do
  begin
    // blabla ..
  end;
end;
Der Thread hat entsprechende Methoden, um Daten zur Liste hinzuzufügen, zu entfernen oder zu verschieben. Jetzt habe ich ein paar Fragen:
Muss ich hier die Zugriffe überhaupt synchronisieren oder regelt TList das intern?
Wenn ja, wie mache ich das am geschicktesten?

Ich hatte mal testweise ein privates Feld CS: TCriticalSection angelegt, welches ich folgendermaßen innerhalb des Threads verwende:
Delphi-Quellcode:
while not Terminated do
begin
  CS.Enter;
  for I := 0 to FList.Count - 1 do
  begin
    // blabla ..
  end;
  CS.Leave;
end;
Die Methoden zum Ändern der Liste wurden entsprechend mit Enter und Leave geklammert.
Das Problem war nun, dass beim Aufruf von z.B. AddData() der Main Thread dauerhaft blockiert wurde, die CriticalSection im Thread also scheinbar nie released wurde.

Hat jemand da paar Tips für mich? Achso der Thread ist zeitkritisch. Einbauen von Sleep oder Ähnlichem ist hier keine Lösung.

Viele Grüße
Zacherl
  Mit Zitat antworten Zitat
 

Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

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 17:26 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