利用局部变量的析构函数完成对cs的leave操作, Test类就是线程安全的
class MyCriticalSection { public: MyCriticalSection() { InitializeCriticalSection(cs); } public: virtual ~MyCriticalSection() { DeleteCriticalSection(cs); } private: CRITICAL_SECTION cs; }; class ThreadSafe { public: ThreadSafe(MyCriticalSection cs) { this->cs = cs; EnterCriticalSection(this->cs); } ~ThreadSafe() { LeaveCriticalSection(cs); } private: MyCriticalSection cs; }; class Test { public: public void Show() { ThreadSafe ts(cs); //do something else //析构函数会leave cs的 } private: MyCriticalSection cs; };