BOOL CReadWriteLock::WriteLock()
{
CAutoLock Lock(mLock);
DWORD CurrentThreadId = GetCurrentThreadId();
std::map<DWORD, BaseLib::CCriticalSection*>::iterator iter
= mThreadLockMap.find(CurrentThreadId);
if (iter == mThreadLockMap.end())
{
BaseLib::CCriticalSection* CriticalSection = new BaseLib::CCriticalSection;
mThreadLockMap[CurrentThreadId] = CriticalSection;
}
iter = mThreadLockMap.begin();
TRACE(_T("[WriteLock]\n"));
for (; iter != mThreadLockMap.end(); ++iter)
{
iter->second->Lock();
}
return TRUE;
}
BOOL CReadWriteLock::WriteUnLock()
{
CAutoLock Lock(mLock);
std::map<DWORD, BaseLib::CCriticalSection*>::iterator iter
= mThreadLockMap.begin();
TRACE(_T("[WriteUnLock]\n"));
for (; iter != mThreadLockMap.end(); ++iter)
{
iter->second->UnLock();
}
return TRUE;
}
대략 WriteUnLock에서 CAutoLock Lock(mLock)에서 멈춰버림....
c문법 오랜 만에 보니 존나 어지럽네
ㄴ 테클 걸줄 알아따