PTHREAD_RWLOCK_WRLOCK(3)

명칭
pthread_rwlock_wrlock, pthread_rwlock_trywrlock - 기록용의 읽기 / 기록 락의 획득

프로그램 라이브러리
libc_r

서식
<pthread.h> int pthread_rwlock_wrlock(pthread_rwlock_t *lock) int pthread_rwlock_trywrlock(pthread_rwlock_t *lock)

해설
pthread_rwlock_wrlock() 함수는, lock 에 대해서 기록용의 락을 획득할 수 있을 때까지, 블록 합니다. pthread_rwlock_trywrlock() 함수는, 같은 조작을 실행합니다만, 곧바로 락을 획득할 수 없는 경우에는, 블록 하지 않습니다.

호출하고 있는 thread가, 호출이 행해진 것과 동시에 이미 그 락을 보관 유지하고 있는 경우에는, 그 결과는 미정도리입니다.

실장에 관한 주
기록측의 기아 상태를 막기 위해, 기록측이 독포함측보다 우선됩니다.

반환값
문제가 없는 경우는, pthread_rwlock_wrlock() 및 pthread_rwlock_trywrlock() 함수는 0 을 돌려줍니다. 문제가 있는 경우는, 그 에러를 나타내기 위해서(때문에) 에러 번호가 돌려주어집니다.

관련 항목
pthread_rwlock_trywrlock(3), pthread_rwlock_unlock(3), pthread_rwlock_wrlock(3)

표준
pthread_rwlock_wrlock() 및 pthread_rwlock_trywrlock() 함수는, susv2 에 적합하고 있을 것입니다.

에러
pthread_rwlock_trywrlock() 함수는, 이하의 경우에 실패합니다.

[EBUSY]
    호출하고 있는 thread가 블록 없음으로 락을 획득할 수 없습니다.

pthread_rwlock_wrlock() 및 pthread_rwlock_trywrlock() 함수는, 이하의 경우에 실패하는 일이 있습니다.

[EDEADLK]
    호출하고 있는 thread가 이미 그 읽기 / 기록 락을 (읽기용 또는 기록용으로) 소유하고 있습니다.

[EINVAL]
    lock 에 의해 지정된 값이 무효입니다.

[ENOMEM]
    락 (정적으로 초기화된 락에만 적용)의 초기화를 위해서(때문에) 충분한 메모리가 없습니다

역사
pthread_rwlock_wrlock() 함수는, FreeBSD 3.0 그리고 처음 등장했습니다.