블로그는 나의 힘!
[ Programing ]/Server2010. 6. 16. 17:23
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
Posted by Mister_Q