나는 교착 상태를 보장하는 실험을하고있다.pthread_mutex_lock() 호출을 할 때 스레드가 성공하지 못하면 어떻게 될까요?
void *thread_1(void *vptr)
{
pthread_mutex_lock(&a);
sleep(1);
pthread_mutex_lock(&b);
pthread_mutex_unlock(&b);
pthread_mutex_unlock(&a);
}
void *thread_2(void *vptr)
{
pthread_mutex_lock(&b);
sleep(1);
pthread_mutex_lock(&a);
pthread_mutex_unlock(&a);
pthread_mutex_unlock(&b);
}
스레드가 잠글 수 없다면 어떻게 될까? 뮤텍스를 기다리는 대기열에 들어가거나 간단히 다음 명령으로 이동합니까?
프로세스 공유 뮤텍스에서 작동하지 않는 올바른 코드에서,'pthread_mutex_lock'는 결코 오류를 반환 할 수 없습니다. 반환 할 수있는 유일한 오류는 런타임에 예외적 인 조건이 아니라 * 프로그래밍 오류를 나타냅니다. –
나는 * process-shared *와 함께 * robust *라고 말해야했습니다. 어쨌든 내 의견은'pthread_mutex_lock'의 리턴 값을 디버깅하거나 프로세스 공유 로버 스트 뮤텍스를 사용할 때 (필요한 경우'EOWNERDEAD '를 확인해야 함)를 제외하고는 필요하지 않음을 확인하는 것이 었습니다. –
@R .: 내 편집 참조. –