mutex unlock 관련 문의
글쓴이: c2bin / 작성시간: 금, 2013/10/18 - 4:47오후
mutex read lock 이후
unlock을 2회 이상 수행했습니다.
이후 다른 작없을 위해 write lock 수행 시 pending 되어 이후의 작업을 수행하지 못하는 현상이 발생되어 문의드립니다.
lock과 unlock의 쌍이 맞지 않고 unlock을 2회 이상 수행하는 경우 즉, lock이 되어 있지 않는 상태에서 unlock 수행하면
나중에 write lock 수행시 문제가 발생되나요? 어떤 현상이 발생되는지 도움주시기 바랍니다.
linux에서 thread관련 프로그래밍이 처음이라 모르는게 넘 많습니다.
Forums:
일반적으로 동일한 뮤텍스에 대해서 (리커시브 뮤텍스가
일반적으로 동일한 뮤텍스에 대해서 (리커시브 뮤텍스가 아닌한)두번 락하는 것도 두번 언락하는 것도 허용되지 않습니다.
구체적인건 사용하는 스레드 라이브러리의 레퍼런스를 봐야하지만, 예를 들면 Qt의 QMutex 클래스에서는 lock되지 않은 mutex에 대한 unlock을 undefined behaviour로 소개하고 있습니다.
Pthread 라면
Recursive Lock 으로 mutex 를 초기화 시켜 주면 해당 문제는 넘어가는 것 처럼 보이겠지만
결국에 Mutex는 쌍이 맞아야 합니다. recursive 옵션 넣지 마시고 그냥 debugging 하는 것이 더 현명한 방법일듯 합니다.
Dig it.
댓글 달기