Einzelnen Beitrag anzeigen

Pfoto

Registriert seit: 26. Aug 2005
Ort: Daun
541 Beiträge
 
Turbo Delphi für Win32
 
#1

TCriticalSection in allen Methoden neu erstellen?

  Alt 18. Dez 2006, 16:52
Hallo zusammen,

Da ich eine Liste thread-sicher abarbeiten will,
sollen die Methoden Add / Delete / clear etc. durch TCriticalSection geschützt werden.

Nun meine vielleicht dumme Frage:
Muss ich in jeder Methode eine eigene Variable mit TCriticalSection initialisieren?
Da doch verschiedene Threads zu gleichen Zeit in verschiedene Methoden springen könnten...


Beispiel:


Delphi-Quellcode:
Type
TListe = class(TList)
private
  fCSAdd: TCriticalSection;
  fCSDelete: TCriticalSection;
public
  ....
end;
.......

implementation

procedure TListe.Add(AItem: String);
begin
  fCSAdd.Enter;
  try
    // Hier Methode Add
  finally
    fCSAdd.Leave;
  end;
end;


procedure TListe.Delete(AItem: String);
begin
  fCSDelete.Enter;
  try
    // Hier Methode Delete
  finally
    fCSDelete.Leave;
  end;
end;

So recht kapiere ich nämlich nicht, wie ein Objekt (TCriticalSection) einen Thread intern bremsen kann, wenn schon ein anderer in der Methode arbeitet... schon gar nicht, wenn das gleiche Objekt dies für alle Methoden des Elternobjektes gewährleisten muss.


Danke für Eure Hilfe

Pfoto
Jürgen Höfs
  Mit Zitat antworten Zitat