pthread_mutex_lock() ...unlock()의 에러처리?
에러처리를 하고있는데요. 이거 다른분들은 보통 어떻게 하시는지 궁금하네요. 지금까지 에러처리하는 소스를 본적이 없는데. 물론 매뉴얼보면 에러가 되는 케이스가 있습니다.
EINVAL The mutex was created with the protocol attribute having the value PTHREAD_PRIO_PROTECT and the calling thread's priority is higher than the mutex's current priority ceiling.
EAGAIN The mutex could not be acquired because the maximum number of recursive locks for mutex has been exceeded.
EDEADLKThe current thread already owns the mutex.
EPERM The current thread does not own the mutex.
여기서 EDEADLK랑 EPERM가 어떤 에러인지 이해가 안되는데, 혹시 아시나요?
EDEADLK는 ...lock()이내는 에러구요. EPERM은 ...unlock()이 내는 에러인데..
그리고 에러처리하신 적 있으시면, 이거 중간에 에러났을 경우의 처리를 어떻게 하시는지. 경우에따라서 goto로 일괄적으로 처리해야 되는 함수같은 경우도 있고 해서, 소스가 뒤죽박죽이 되버리네요 --;
EDEADLK 과 EPERM은
설명대로 입니다.
EDEADLK은 lock을 한 thread가 또 lock을 하려고 할 때 나는 에러이고
EPERM은 위의 반대 상황이라고 보면 될 듯 하네요. lock을 하지 않은 therad가 unlock을 하려고 할 때 나는 에러입니다.
그리고, 저도 pthread_lock / unlock은 별도로 에러처리를 해준 기억이 나질 않네요.
해봐야 로그 찍는 정도랄까...
man
man pthread_mutexattr_settype
OTL
댓글 달기