프로그래밍 초보 탈출

Libraries/Delphi Library

[IPC] Critical Section Class

째즈토끼 2022. 6. 22. 22:27
unit LibCriticalSection;

interface

uses
  Windows;

type
  TCriticalSectionClass = class
  private
    FCreated: Boolean;
  protected
    __Critical: TRTLCriticalSection;

    procedure InitializeCritical; virtual;
    procedure DeleteCritical; virtual;
  public
    constructor Create; virtual;
    destructor Destroy; override;
    procedure EnterCritical; virtual;
    procedure LeaveCritical; virtual;
  end;

implementation

{ TCriticalSectionClass }

constructor TCriticalSectionClass.Create;
begin
  InitializeCritical();
end;

destructor TCriticalSectionClass.Destroy;
begin
  DeleteCritical();
  inherited;
end;

procedure TCriticalSectionClass.InitializeCritical;
begin
  if not FCreated then begin
     InitializeCriticalSection(__Critical);
     FCreated := TRUE;
     end;
end;

procedure TCriticalSectionClass.DeleteCritical;
begin
  if FCreated then begin
     DeleteCriticalSection(__Critical);
     FCreated := FALSE;
     end;
end;

procedure TCriticalSectionClass.EnterCritical;
begin
  if FCreated then EnterCriticalSection(__Critical);
end;

procedure TCriticalSectionClass.LeaveCritical;
begin
  if FCreated then LeaveCriticalSection(__Critical);
end;

end.

'Libraries > Delphi Library' 카테고리의 다른 글

[System] Window Desktop Library  (0) 2022.06.22
[DateTime] Lunar Library  (0) 2022.06.22
[Math] Complex Library  (0) 2022.06.22
[Graphics] Bitmap Library  (0) 2022.06.22
[Parser] Command Line Parser  (0) 2022.06.22