dass man es nur unlocken kann wenn man es selbst vorher gelocked hat.
Wer ist denn
selbst bzw. wie identifiziert sich dieses
selbst? Man kann sich natürlich beim Lock auch einen Syhlüssel zum Unlock geben lassen:
Delphi-Quellcode:
TLock = record
private
FLocked: TGUID;
class function Create: TLock; static;
function GetLocked: Boolean;
public
function TryLock(var Key: TGUID): Boolean;
function Unlock(const Key: TGUID): Boolean;
property Locked: Boolean read GetLocked;
end;
class function TLock.Create: TLock;
begin
Result.FLocked := TGUID.Empty;
end;
function TLock.GetLocked: Boolean;
begin
Result := (FLocked <> TGUID.Empty);
end;
function TLock.Unlock(const Key: TGUID): Boolean;
begin
Result := False;
if Key = FLocked then begin
FLocked := TGUID.Empty;
Result := True;
end;
end;
function TLock.TryLock(var Key: TGUID): Boolean;
begin
Result := False;
if not Locked then begin
Key := TGUID.NewGuid;
FLocked := Key;
Result := True;
end;
end;
Das scheint aber schon eine sehr spezielle Anforderung zu sein, die du da umsetzen willst.
Ich sehe gerade, da hat das schon jemand aufgegriffen.