thread 동기화 관련하여 잘 이해가 가질 않네요.
글쓴이: gugudan / 작성시간: 일, 2007/01/14 - 5:40오후
class CCriticalSection
{
public:
CCriticalSection(VOID)
{
InitializeCriticalSection(&mSync);
}
~CCriticalSection(VOID)
{
DeleteCriticalSection(&mSync);
}
inline VOID Enter(VOID)
{
EnterCriticalSection(&mSync);
}
inline VOID Leave(VOID)
{
LeaveCriticalSection(&mSync);
}
private:
CRITICAL_SECTION mSync;
}
#pragma once
template <class T>
class CMultiThreadSync
{
friend class CThreadSync;
public:
class CThreadSync
{
public:
CThreadSync(VOID)
{
T::mSync.Enter();
}
~CThreadSync(VOID)
{
T::mSync.Leave();
}
};
private:
static CCriticalSection mSync;
};
template <class T>
CCriticalSection CMultiThreadSync<T>::mSync;
2개의 클래스가 있습니다.
Online Game Server Program이라는 책에서 가져왔습니다.
잘 이해가 가지 않습니다.
CCriticalSection 이 클래스는 이해가 가는데
CMultiThreadSync 이 클래스는 이해가 가질 않네요.
왜 CMultiThreadSync 이 클래스 안에 CThreadSync 클래스를 만들었는데 CThreadSync 클래스 없이
그냥 하면 안되는건가요?
그리고 CCriticalSection에서 멤버변수로 잡은 mSync과
CMultiThreadSync에서 정적멤버변수로 잡은 mSync 이것도
잘 이해가 가질 않네요.
좀 자세히 설명좀 해주실수 없는지요?
Forums:


댓글 달기