Oldalak

2013. február 4., hétfő

Thread-safe TCounter osztály

interface

type
  TCounter = class
  public
     constructor Create;
     function GetCounter : Integer;
  end;

var
  Counter : Integer;
  CriticalSection : TRtlCriticalSection;

implementation

constructor TCounter.Create;
begin

  inherited;
  EnterCriticalSection(CriticalSection);
  try
    Counter := Counter + 1;
  finally
    LeaveCriticalSection(CriticalSection);
  end;
end;

function TCounter.GetCounter : Integer;
begin
  // nem kell kritikus tartomány, mert az Integer
  // elemi változó
  Result := Counter;
end;

initialization
  InitializeCriticalSection(CriticalSection);
finalization
  DeleteCriticalSection(CriticalSection);
end.

Nincsenek megjegyzések:

Megjegyzés küldése