AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

CriticalSection nötig ?

Ein Thema von DataCool · begonnen am 10. Dez 2003 · letzter Beitrag vom 10. Dez 2003
 
Benutzerbild von DataCool
DataCool

Registriert seit: 10. Feb 2003
Ort: Lingen
909 Beiträge
 
Delphi 10.3 Rio
 
#1

CriticalSection nötig ?

  Alt 10. Dez 2003, 00:23
Hi Leute,

kurz ne Frage zur CriticalSection:

1. Nehmen wir mal an ich habe innerhalb eines Threads eine private StringListe.
2. Andere Threads können nicht direkt auf die Stringlist zugreifen, sondern nur über den Methode :
Code:
procedure TmyThread.add(Command : String);
begin
   fCmdList.Add(Command);
   if Suspended then
     resume;
end;
3. Die StringList enthält eine Liste von Befehlen die sequentiell abgearbeitet werden sollen, d. h. neue Befehle am Ende hinzufügen und immer das Element 0 in der liste ist der aktuelle Befehl und wird nach der verarbeitung gelöscht.

4. Der Execute Coode des Threads sieht folgendermaßen aus :
Code:
procedure TmyThread.Execute;
begin
   repeat
      while fCmdList.Count > 0 do begin
         doCommand;;
         if fChatList.Count > 0 then // nötig ??
           sleepEx(100,true);
      end;
      // nichts mehr in der Warteschlange --> Thread schlafen legen
      Suspend;
   until Terminated;
end;
So, jetzt meine Fragen :

Da TStringList ja nicht Thread sicher ist, muss ich hier mit CriticalSection arbeiten ?
Obwohl ich von aussen nur immer Elemente am ende der liste hinzufüge ?
Wenn ich mit CriticalSection arbeite, dann nur bei Delete der stringliste oder auch beim Add ?

Irgentwo hab ich mal gelesen das CriticalSections immer global deklariert werden müssen, damit auch alle threads blockiert werden ?!
Ist das richtig ?
Kann ich nicht innerhalb meines Threads als private Var eine CS erzeugen ? Ich schütze ja auch nur das add und Delete der ebenfalls internen stringliste. Und der Zugriff geschieht ja nicht direkt von anderen Threads sondern wie oben beschrieben mit der Add-Methode des Threads.

Letze und abschliessende Frage :

Ist der Construkt im obringen OnExecute praktikabel, um eine Liste in einem Thread abzuarbeiten und wenn nichts zur verarbeitung da ist, soll der Thread schlafen, wenn was hinzugefügt wird soll er aufwachen.

Danke,

Data
Der Horizont vieler Menschen ist ein Kreis mit Radius Null, und das nennen sie ihren Standpunkt.
  Mit Zitat antworten Zitat
 


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 19:48 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