Mutex는 Recursive 옵션이라 한가지 기능만을 수행한다.
즉, 쉽게 말해 Lock() 한다면 다시 Lock() 연속으로 수행을 못 한다는 소리.
( 말이 이상한가?! )
여튼, 중요한건 내가 설명하는거 못해 않게 Mutex 자료는 방대하게 있으니 찾아 보시고 설정하는 것을 적는다.
1. 일반적 Mutex 선언
pthread_mutex_t mutex;
pthread_mutex_init( &mutex, NULL ); // Mutex 생성
pthread_mutex_lock( &mutex ); // 락
pthread_mutex_unlock( &mutex ); // 락 해제
pthread_mutex_destory( &mutex ); // Mutex 해제
2. 사용자 설정 Mutex
pthread_mutex_t mutex;
pthread_mutexattr_t mutexattr;
pthread_mutexattr_init( &mutexattr ); // Mutex 설정 변수 ( mutexattr ) 생성
// Mutex 설정
// PTHREAD_MUTEX_RECURSIVE : 연속적인 락을 중복 적용 할 수 있다.
// 락 가능 마찬가지로 언락도 같은 횟수 해제 해야 한다.
// 락 가능 마찬가지로 언락도 같은 횟수 해제 해야 한다.
// 그 외 PTHREAD_MUTEX_NORMAL, PTHREAD_MUTEX_ERRORCHECK, PTHREAD_MUTEX_DEFAULT
// 설정 값은 아래 링크를 참조 하자.
// 설정 값은 아래 링크를 참조 하자.
pthread_mutexattr_settype( &mutexattr, PTHREAD_MUTEX_RECURSIVE );
// Mutex 생성. 생성시 mutexattr 인자로 넘겨 적용한 mutex로 설정
pthread_mutex_init( &mutex, &mutexattr );
pthread_mutex_lock( &mutex ); // 락
pthread_mutex_unlock( &mutex ); // 락 해제
pthread_mutex_destory( &mutex ); // Mutex 해제
pthread_mutexattr_destory( &mutexattr ); // Mutex 설정 변수 ( mutexattr ) 해제
이렇게 설정하면 Mutex는 사용자가 설정한 방법으로 적용되어 동작 한다.
'[ Programing ] > Server' 카테고리의 다른 글
이벤트 객체 CreateEvent, SetEvent, ResetEvent, PulseEvent (0) | 2012.12.04 |
---|---|
Shared memory (0) | 2010.07.23 |
메모리 락 (0) | 2010.06.29 |
POSIX 정규 표현식 (0) | 2010.06.29 |
Deadlock (0) | 2010.06.16 |