Das ist jetzt vermutlich zu trivial:
Delphi-Quellcode:
type
TLock = record
private
FLocked: Boolean;
class function Create: TLock; static;
public
function TryLock: Boolean;
procedure Unlock;
property Locked: Boolean read FLocked;
end;
class function TLock.Create: TLock;
begin
Result.FLocked := False;
end;
function TLock.TryLock: Boolean;
begin
Result := not FLocked;
FLocked := True;
end;
procedure TLock.Unlock;
begin
FLocked := False;
end;