2008년 12월 15일
유용한 뮤텍스 Wrapper 클래스
--- MutexLock.h ---
class MutexLock
{
private:
pthread_mutex_t *m_pMutex;
public:
MutexLock(pthread_mutex_t *mutex);
~MutexLock();
};
--- MutexLock.cpp ---
#include "MutexLock.h"
MutexLock::MutexLock(pthread_mutex_t *mutex) : m_pMutex(mutex)
{
pthread_mutex_lock(m_pMutex);
}
MutexLock::~MutexLock()
{
pthread_mutex_unlock(m_pMutex);
}
코드에 뮤텍스를 통한 락을 걸때 중간에 뮤텍스락을 해제해주지않고 return 되는 등의 버그를 방지하기 위한 간단한 Mutex Wrapper 클래스이다. 클래스를 로컬변수 형태로 생성해서 뮤텍스객체를 생성자에게 넘겨주면 로컬변수가 해제되는 시점에 클래스의 파괴자가 호출되면서 뮤텍스를 해제시켜준다
사용예)
void func(...)
{
MutexLock mutexLock(&mutex); ---> 뮤텍스를 걸고싶은 곳에 넣어주면된다. 함수중간이라면 {...} 감싸도 됨.
....
}
# by | 2008/12/15 16:24 | c/c++ | 트랙백 | 덧글(0)





☞ 내 이글루에 이 글과 관련된 글 쓰기 (트랙백 보내기) [도움말]