Hier mal als Beispiel für die von himi angesprochene Klasse (für einen string mit speziellen Aufgaben)
Delphi-Quellcode:
TSyncString=class(TSimpleRWSync)
private
FValue:String;
procedure setValue(Value:string);
function getValue:string;
public
function length:Integer;
property Value:string read getValue write SetValue;
procedure Add(const Value:string); //string um einen weiteren ergänzen
procedure Delete(Pos,Count:Integer); //ein teil des strings löschen
end;
{ TSyncString }
procedure TSyncString.Add(const Value: string);
begin
BeginWrite;
try
FValue:=FValue+Value;
finally
EndWrite;
end;
end;
procedure TSyncString.Delete(Pos, Count: Integer);
begin
BeginWrite;
try
system.Delete(FValue,Pos,Count);
finally
EndWrite;
end;
end;
function TSyncString.getValue: string;
begin
BeginRead;
try
result:=FValue;
finally
EndRead;
end;
end;
function TSyncString.length: Integer;
begin
BeginRead;
try
result:=system.length(FValue);
finally
EndRead;
end;
end;
procedure TSyncString.setValue(Value: string);
begin
BeginWrite;
try
FValue:=Value;
finally
EndWrite;
end;
end;
TSimpleRWSync hat so eine CS. Wenn man noch mehrere Threads zugreifen lässt, dann ist es sinnvoll lesende von schreibenden Zugriffen zu "trennen", das macht dann TMultiSync..irgendwas
Auch ist es sinnvoll sich TThreadlist anzusehen.
Dieser Beitrag ist für Jugendliche unter 18 Jahren nicht geeignet.