Leaked source code of windows server 2003
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
|
|
//#pragma title( "TSync.hpp - Common synchronization classes header file" )
/*
Copyright (c) 1995-1998, Mission Critical Software, Inc. All rights reserved. =============================================================================== Module - TSync.hpp System - Common Author - Rich Denham Created - 1996-11-08 Description - Common synchronization classes header file This includes TCriticalSection, and TNamedSemaphore Updates - =============================================================================== */
#ifndef MCSINC_TSync_hpp
#define MCSINC_TSync_hpp
#ifndef _INC_TIME
#include <time.h>
#endif
class TCriticalSection { CRITICAL_SECTION cs; public: TCriticalSection() { InitializeCriticalSection(&cs); } ~TCriticalSection() { DeleteCriticalSection(&cs); } void Enter() { EnterCriticalSection(&cs); } void Leave() { LeaveCriticalSection(&cs); } };
class TSynchObject { public: HANDLE handle; TSynchObject() { handle = NULL; } ~TSynchObject() { Close(); } void Close() { if ( handle != NULL ) { CloseHandle( handle ); handle = NULL; } }
DWORD WaitSingle(DWORD msec) const { return WaitForSingleObject(handle, msec); } DWORD WaitSingle() const { return WaitForSingleObject(handle, INFINITE); } HANDLE Handle() { return handle; } };
///////////////////////////////////////////////////////////////////////////////
// Named semaphores
///////////////////////////////////////////////////////////////////////////////
class TSemaphoreNamed : public TSynchObject { public: TSemaphoreNamed() {}; ~TSemaphoreNamed() {}; DWORD Create( // ret-OS return code
TCHAR const * sNameT ,// in -semaphore name
DWORD nInitial ,// in -initial count
DWORD nMaximum ,// in -maximum count
BOOL * pbExisted=NULL // out-TRUE=previously existed
); DWORD Open( // ret-OS return code
TCHAR const * sNameT // in -semaphore name
); DWORD Release( // ret-OS return code
long nRelease=1 // in -number to release
); };
#endif // MCSINC_TSync_hpp
// TSync.hpp - end of file
|