뮤텍스/크리티컬 섹션 처리하는 클래스를 처리하는 클래스를 만들어 두면 편리합니다.
#pragma once
class CTaskMutex
{
public:
CTaskMutex(HANDLE hMutex)
{
m_hMutex = hMutex;
WaitForSingleObject(m_hMutex, INFINITE);
}
~CTaskMutex()
{
ReleaseMutex(m_hMutex);
}
private:
HANDLE m_hMutex;
};
class CTaskCSLock
{
public:
CTaskCSLock(CRITICAL_SECTION& hCSLock)
{
m_pcsLock = NULL;
m_pcsLock = &hCSLock;
EnterCriticalSection(m_pcsLock);
}
~CTaskCSLock()
{
LeaveCriticalSection(m_pcsLock);
}
private:
CRITICAL_SECTION* m_pcsLock;
};