};
#include "CAddef.h" CAddef::CAddef(void) { _index = 0; InitializeCriticalSection(&_cs); } CAddef::~CAddef(void) { DeleteCriticalSection(&_cs); } int CAddef::AddDef() { EnterCriticalSection(&_cs); ++_index; LeaveCriticalSection(&_cs); return _index; } int CAddef::Release() { EnterCriticalSection(&_cs); --_index; if (_index <= 0) { LeaveCriticalSection(&_cs); delete this; return 0; } LeaveCriticalSection(&_cs); return _index; }
有了上面那个基类,接下来只需要派生出子类,就可以通过adderf和release进行控制 new出来一份内存,可以多线程共享使用了。
adderf和release必须一对一出现,否则就会出问题。