2011-08-20 4 views
1

pthread_wrlock_wrlock 및 pthread_wrlock_rdlock에 대한 질문이 있습니다. 스핀 잠금으로 구현되지 않았습니까 ?? pthread_wrlock_xxlock 스핀 잠금이 아닙니까?

내가 내 코드에서이 시도 :

:

pthread_rwlock_t rwlock = PTHREAD_RWLOCK_INITIALIZER; 
pthread_rwlock_rdlock (&rwlock); 
pthread_rwlock_wrlock (&rwlock); 

는 => 이것은 내가 그러나, 나는 존경 하나가 교착 상태가 발생하지 않는 이유를 이해하지 못하는

을 예상대로 교착 상태가 발생

pthread_rwlock_t rwlock = PTHREAD_RWLOCK_INITIALIZER; 
pthread_rwlock_wrlock (&rwlock); // return 0 
pthread_rwlock_rdlock (&rwlock); // return 35 

pthread_rwlock_rdlock이 회전하면 왜 회전하지 않고 실패를 반환합니까?

답변

1

동일한 스레드이기 때문에 교착 상태가 발생하므로 반환 코드 EDEADLK은 분명히 원하는 것이 아닙니다.

첫 번째 경우는 결함으로 보입니다. 이는 또한 EDEADLK을 반환해야합니다. 차단은 개별 스레드에서만 발생해야합니다.

+0

감사합니다, 스티브, 다른 스레드에서 시도하고 교착 상태가 발생했습니다. – kai

관련 문제