www.pudn.com > WinGOS.rar > SyncObject.h


#ifndef _GOS_SYNCOBJECT_H_ 
#define _GOS_SYNCOBJECT_H_ 
 
class CThread; 
 
class CSyncObject 
{ 
public:	 
	virtual BOOL Lock(LONG nTimeOut)=0; 
	virtual BOOL Unlock()=0; 
	virtual CThread* FindProxy(CThread* pWaiter,LONG nCurTime)=0; 
	void LockEx(CThread* pThread,LONG nTimeOut); 
protected: 
	DWORD m_nData; 
}; 
 
class CCriticalSection : public CSyncObject 
{ 
public:	 
	CCriticalSection(); 
	virtual BOOL Lock(LONG nTimeOut); 
	virtual BOOL Unlock(); 
	virtual CThread* FindProxy(CThread* pWaiter,LONG nCurTime); 
}; 
 
class CMutex : public CCriticalSection 
{ 
public:	 
	CMutex(CThread* pInitialOwn); 
	CMutex(BOOL bInitialOwn); 
	virtual CThread* FindProxy(CThread* pWaiter,LONG nCurTime); 
}; 
 
class CSemaphore : public CSyncObject 
{ 
public:	 
	CSemaphore(LONG nInitialCount); 
	virtual BOOL Lock(LONG nTimeOut); 
	virtual BOOL Unlock(); 
	virtual CThread* FindProxy(CThread* pWaiter,LONG nCurTime); 
public: 
	LONG m_nCount; 
	LONG m_nIntCount; 
}; 
 
class CEvent : public CSyncObject 
{ 
public:	 
	CEvent(BOOL bInitialOwn,BOOL bManualReset); 
	virtual BOOL Lock(LONG nTimeOut); 
	virtual BOOL Unlock(); 
	virtual CThread* FindProxy(CThread* pWaiter,LONG nCurTime); 
	BOOL ResetEvent(); 
	BOOL SetEvent(); 
}; 
 
typedef CSyncObject* PSYNCOBJECT; 
 
#endif //_GOS_SYNCOBJECT_H_