CriticalSection()
                : mCriticalSection(NULL)
        {                
        }


        ~CriticalSection()
        {
                if (mInit)
                {
                        Destructor();
                }
        }


        bool Constructor()
        {
                mCriticalSection = new(std::nothrow) CRITICAL_SECTION;
                if (!mCriticalSection) 
                {
                        Destructor();
                        return false;
                }

                if (!InitializeCriticalSectionAndSpinCount(mCriticalSection, 2000)) 
                {
                        Destructor();
                        return false;
                }

                mInit = true;

                return true;
        }

        void Destructor()
        {
                if (mCriticalSection)
                {
                        DeleteCriticalSection(mCriticalSection);
                        delete mCriticalSection;
                        mCriticalSection = NULL;
                }

                mInit = false;
        }


        bool Lock()
        {
                if (!mInit) return false;

                EnterCriticalSection(mCriticalSection);

                return true;
        }


        bool Unlock()
        {
                if (!mInit) return false;

                LeaveCriticalSection(mCriticalSection);

                return true;
        }

메소드가 적어서 이모양이지

메소드 많아지면 상태체크 코드만 절반될덧...