warsmartpointer.cpp

来自「ftpserver very good sample」· C++ 代码 · 共 66 行

CPP
66
字号
#include "StdAfx.h"#include <assert.h>#include "WarSmartPointer.h"   // class implemented#include "WarCriticalSection.h"#include "WarAutoLock.h"#ifndef WAR_PERFMON_DEF_H#   include "WarPerfmonDef.h"#endif// ConstantsWarCriticalSection *WarSmartPointer::mspLock;#define AUTO_LOCK WarAutoLock MyLock(*mspLock);/////////////////////////////// PUBLIC /////////////////////////////////////////============================= LIFECYCLE ====================================WarSmartPointer::WarSmartPointer(): mRefCnt(0){    WAR_DB_PERFMON_INC(WAR_PRFDEBUG_NUM_AUTOPTR);}// WarSmartPointerWarSmartPointer::~WarSmartPointer(){    WAR_DB_PERFMON_DEC(WAR_PRFDEBUG_NUM_AUTOPTR);}// ~WarSmartPointer//============================= OPERATORS ====================================//============================= OPERATIONS ===================================void WarSmartPointer::Initialize(){    if (!mspLock)        mspLock = new WarCriticalSection;}void WarSmartPointer::Attach(){    AUTO_LOCK    ++mRefCnt;}void WarSmartPointer::Detach(){    {        AUTO_LOCK        if (--mRefCnt <= 0)            goto destroy_me; // We can not die when the lock is active    }    return;    destroy_me:    delete this;}//============================= ACESS      ===================================//============================= INQUIRY    ===================================/////////////////////////////// PROTECTED  ////////////////////////////////////////////////////////////////// PRIVATE    ///////////////////////////////////

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?