123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132 |
- {
- $Id$
- This file is part of the Free Component Library (FCL)
- Copyright (c) 1998 by Florian Klaempfl
- member of the Free Pascal development team
- See the file COPYING.FPC, included in this distribution,
- for details about the copyright.
- This program is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
- **********************************************************************}
- {$mode objfpc}
- {$h+}
- unit syncobjs;
- interface
- uses
- windows,sysutils;
- type
- PSecurityAttributes = Windows.PSecurityAttributes;
- TSecurityAttributes = Windows.TSecurityAttributes;
- TEventHandle = THandle;
- {$I syncobh.inc}
- implementation
- {$I syncob.inc}
- procedure TCriticalSection.Acquire;
- begin
- EnterCriticalSection(CriticalSection);
- end;
- procedure TCriticalSection.Release;
- begin
- LeaveCriticalSection(CriticalSection);
- end;
- constructor TCriticalSection.Create;
- begin
- inherited Create;
- InitializeCriticalSection(CriticalSection);
- end;
- destructor TCriticalSection.Destroy;
- begin
- DeleteCriticalSection(CriticalSection);
- inherited Destroy;
- end;
- destructor THandleObject.destroy;
- begin
- CloseHandle(FHandle);
- inherited Destroy;
- end;
- constructor TEventObject.Create(EventAttributes : PSecurityAttributes;
- AManualReset,InitialState : Boolean;const Name : string);
- begin
- FHandle := CreateEvent(EventAttributes, AManualReset, InitialState, PChar(Name));
- end;
- destructor TEventObject.destroy;
- begin
- inherited;
- end;
- procedure TEventObject.ResetEvent;
- begin
- Windows.ResetEvent(FHandle)
- end;
- procedure TEventObject.SetEvent;
- begin
- Windows.SetEvent(FHandle);
- end;
- function TEventObject.WaitFor(Timeout : Cardinal) : TWaitResult;
- begin
- case WaitForSingleObject(Handle, Timeout) of
- WAIT_ABANDONED: Result := wrAbandoned;
- WAIT_OBJECT_0: Result := wrSignaled;
- WAIT_TIMEOUT: Result := wrTimeout;
- WAIT_FAILED:
- begin
- Result := wrError;
- FLastError := GetLastError;
- end;
- else
- Result := wrError;
- end;
- end;
- constructor TSimpleEvent.Create;
- begin
- FHandle := CreateEvent(nil, True, False, nil);
- end;
- end.
- {
- $Log$
- Revision 1.6 2003-06-17 07:35:58 michael
- + Renamed ManualReset parameter to TEventObject constructor
- Revision 1.5 2003/06/14 19:16:50 michael
- + Some improvements for the Linux version
- Revision 1.4 2003/06/11 11:59:52 michael
- + Implemented Win32 of syncobjs
- Revision 1.3 2002/09/07 15:15:29 peter
- * old logs removed and tabs fixed
- }
|