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