이 호출이 실패합니다 같은 스레드에서 pthread_mutex_unlock
것을 여전히 가능, 스레드가 성공적으로 pthread_mutex_lock
전화 가정? 그렇다면이 외에 스레드를 중단에 대해, 당신은 실제로 뭔가를 할 수 있습니까?pthread_mutex_unlock 실패를 어떻게 처리합니까?
if(pthread_mutex_lock(&m) == 0)
{
// got the lock, let's do some work
if(pthread_mutex_unlock(&m) != 0) // can this really fail?
{
// ok, we have a lock but can't unlock it?
}
}
this page에서 pthread_mutex_unlock()
가능한 오류는 :
[EINVAL] 뮤텍스에 의해 지정된 값이 초기화 뮤텍스 객체를 참조하지 않는다 .
잠금 후 성공하면이 실패 할 가능성이 있습니다.
[EAGAIN] 뮤텍스 잠금 재귀의 최대 수를 초과했기 때문에 뮤텍스를 취득 할 수 없습니다 .
정말? 잠금 해제?
pthread_mutex_unlock() 함수는 다음 경우에 실패 할 수 있습니다.
[EPERM] 현재 스레드가 mutex를 소유하지 않습니다.
다시 잠금이 성공하면 다시 발생하지 않아야합니다.
내 생각에 성공적인 잠금이 있다면이 상황에서 잠금을 해제하면 오류 검사와 후속 처리 코드를 무의미하게 만들 수 없습니다.
감사를 요구하고 있지만 당신의 이론은, 스트레스라고 할 수 있습니다. 나는 왜 내가 묻고 있는지 명확하게하기 위해 질문을 업데이트했다. 내가 대답을 수락하기 전에 다른 입력을 얻을 수 있는지 확인하고 싶습니다. –