創建自己的CriticalSection和Lock

Lockable.h: CriticalSection的抽象父類
class LockableObject
{
      public:
            LockableObject(){}
            virtual ~LockableObject(){}
            virtual void Lock() = 0;
            virtual void Unlock() = 0;
};
 
CriticalSection.h
#include "LockableObject.h"
#include <windows.h>
 
class CriticalSection : public LockableObject
{
      public:
            CriticalSection();
            virtual ~CriticalSection();
            virtual void Lock();
            virtual void Unlock();
      private:
            CRITICAL_SECTION mCriticalSection;
};
 
CriticalSection.cpp
#include "CriticalSection.h"
 
CriticalSection::CriticalSection()
{
      InitializeCriticalSection(&mCriticalSection);
}
 
CriticalSection::~CriticalSection()
{
      DeleteCriticalSection(&mCriticalSection);
}
 
void CriticalSection::Lock()
{
      EnterCriticalSection(&mCriticalSection);
}
 
void CriticalSection::Unlock()
{
      LeaveCriticalSection(&mCriticalSection);
}
 
Lock.h
#include "CriticalSection.h"
 
class Lock
{
      public:
            Lock(LockableObject* pLockable);
            ~Lock();
      private:
            LockableObject* mLockable;
};
 
Lock.cpp
#include "Lock.h"
 
Lock::Lock(LockableObject* pLockable)
{
      mLockable = pLockable;
      pLockable->Lock();
}
 
Lock::~Lock()
{
      mLockable->Unlock();
}
     
  <SCRIPT src="http://pagead2.googlesyndication.com/pagead/show_ads.js" type=text/javascript> </SCRIPT>
Google
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章