pthread_mutex_unlock() 중복 호출

pthread_mutex_unlock() 을 호출하면, pthread_mutex의 멤버 변수 중 하나인 __nusers 값이 1에서 0으로 감소한다. 이 상태에서 다시 unlock()을 호출하면? 0에서 -1로 감소해야 하는데, 여기까지는 정의되지 않았다. 따라서 unsigned 변수인 __nusers 값은 -1이 아니라 2**32-1 가 된다. 이는 pthread_mutex_destroy() 에서 ‘아직 사용 중인 thread가 있는데?’ 라고 오해를 사기 딱 좋은 상황이 된다. 개발자는 분명히 ‘이 때쯤엔 pthread_mutex […]

더 읽어보기