#include <windows.h>
class InterLock { public: InterLock() { InitializeCriticalSection(&cs_); }
~InterLock() { DeleteCriticalSection(&cs_); }
void enter() { EnterCriticalSection(&cs_); }
void leave() { LeaveCriticalSection(&cs_); }
private: CRITICAL_SECTION cs_; };
template <typename LockType> class AutoLock { public: AutoLock(LockType& lock) : lock_(lock) { lock_.enter(); }
~AutoLock() { lock_.leave(); }
private: LockType& lock_; };
现在当某个函数需要同步时,就可以在其初加上: InterLock lock_; AutoLock<InterLock> lock(lock_); 这样就会调用构造函数,从而加锁,而函数结束后,会自动调用析构函数,从而释放锁。