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:
댓글 달기