一个多线程加锁问题。。。。求助巨巨们!!!
typedef std::map<void*, CCritSect*> lock_map_t;class CCritSect{public: friend class BDThreadPool; CCritSect() { InitializeCriticalSection(&_critSection); } ~CCritSect() { DeleteCriticalSection(&_critSection); }private: void Acquire(){EnterCriticalSection(&_critSection);} void Release(){LeaveCriticalSection(&_critSection);} CRITICAL_SECTION _critSection;};void BDThreadPool::Lock(void * p){ CCritSect * pcs = NULL; m_lock_op.Acquire(); lock_map_t::iterator ite = m_lock_map.find(p); if (ite == m_lock_map.end()) { pcs = new CCritSect(); m_lock_map[p] = pcs; } pcs = m_lock_map[p]; m_lock_op.Release(); pcs->Acquire();}void BDThreadPool::UnLock(void * p){ m_lock_op.Acquire(); lock_map_t::iterator ite = m_lock_map.find(p); if (ite != m_lock_map.end()) { m_lock_map[p]->Release(); SAFE_DELETE(ite->second); m_lock_map.erase(ite); } m_lock_op.Release();}