Programming/C++ 2007/03/05 16:51
원본 : http://www.debuglab.com/knowledge/synctemplate.html
1.요약
템플릿을 이용하여 원하는 클래스를 동기화 클래스로 만들어 보겠습니다.
2.본문
3.예제
- 2001.08.13 Smile Seo -
1.요약
템플릿을 이용하여 원하는 클래스를 동기화 클래스로 만들어 보겠습니다.
2.본문
template <class T>
class CSyncClass : public T
{
public:
CSyncClass() { ::InitializeCriticalSection(&m_CritSectionStruct); };
virtual ~CSyncClass() { ::DeleteCriticalSection(&m_CritSectionStruct); };
private:
CRITICAL_SECTION m_CritSectionStruct;
public:
inline void Lock() { ::EnterCriticalSection(&m_CritSectionStruct); };
inline void Unlock() { ::LeaveCriticalSection(&m_CritSectionStruct); };
};
3.예제
class CQueue
{
...
protected:
CSyncClass<CPtrList> m_Queue;
...
public:
void Queue(LPVOID pItem);
LPVOID Top();
...
};
void CQueue::Queue(LPVOID pItem)
{
m_Queue.Lock();
m_Queue.AddTail(pItem);
m_Queue.Unlock();
}
LPVOID CQueue::Top()
{
LPVOID pItem = NULL;
m_Queue.Lock();
if (!m_Queue.IsEmpty())
pItem = m_Queue.RemoveHead();
m_Queue.Unlock();
return pItem;
}
- 2001.08.13 Smile Seo -
"C++" 카테고리의 다른 글
- based addressing (0)2007/03/17
- stringstream (0)2007/03/08
- upper_bound/lower_bound (0)2007/03/08
- auto_ptr (0)2007/03/05
- 템플릿을 이용한 동기화 클래스 만들기 (0)2007/03/05
- Override를 통해 잃어버리는 것들 (0)2007/03/01
- 비교 연산자를 위한 예약어들 (0)2007/03/01
- 할당된 블록의 크기 구하기 (0)2006/12/08
- 포인터 변수를 검증하기 위한 매크로 (0)2006/12/08
- base pointer를 지정하자. (0)2006/12/08
http://www.webdizen.net/blog/trackback/2678




0