원본 : 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++" 카테고리의 다른 글
- 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
Tags 동기화 클래스

수안이의 컴퓨터 연구실



Leave your greetings.