pthread_rwlock_timedrdlock(3)
MPaTnHuRaElAD_RWLOCK_TIMEDRDLOCK(3)
NAME
- pthread_rwlock_timedrdlock - acquire a read-write lock for
- reading or give up after a specified period
LIBRARY
library ``libpthread'' library ``libthr''
SYNOPSIS
#include <pthread.h> int pthread_rwlock_timedrdlock(pthread_rwlock_t *rwlock, const struct timespec *abs_timeout);
DESCRIPTION
- This function acquires a read lock on the read-write lock
- rwlock. However, if the lock cannot be acquired without waiting for an
- other thread to unlock the lock, this wait shall be terminated when
- abs_timeout expires.
- A thread may hold multiple concurrent read locks. The pthread_rwlock_unlock(3) function must be called once for
- each lock acquired.
- If the thread should be interrupted by a signal, the pthread_rwlock_timedrdlock() function will be automatically
- restarted after the thread returns from the signal handler.
- The calling thread may deadlock if at the time the call is
- made it holds a write lock on rwlock. The results are undefined if this
- function is called with an uninitialized read-write lock.
IMPLEMENTATION NOTES
- To prevent writer starvation, writers are favored over read
- ers.
RETURN VALUES
- If successful, the pthread_rwlock_timedrdlock() function
- will return zero. Otherwise, an error number will be returned to indi
- cate the error.
- This function shall not return an error code of EINTR.
ERRORS
The pthread_rwlock_timedrdlock() function will fail if:
- [ETIMEDOUT] The lock could not be acquired before the
- specified
- timeout expired.
- The pthread_rwlock_timedrdlock() function may fail if:
- [EAGAIN] The read lock could not be acquired be
- cause the maxi
- mum number of read locks for rwlock would
- be exceeded.
- [EDEADLK] The calling thread already holds a write
- lock on
- rwlock.
- [EINVAL] The value specified by rwlock does not
- refer to an
- initialized read-write lock object, or
- the abs_timeout nanosecond value is less than zero or
- greater than or equal to 1 billion.
SEE ALSO
pthread_rwlock_init(3), pthread_rwlock_timedwrlock(3),
pthread_rwlock_unlock(3)STANDARDS
- The pthread_rwlock_timedrdlock() function is expected to
- conform to ISO/IEC 9945-1:1996 (``POSIX.1'').
HISTORY
- The pthread_rwlock_timedrdlock() function first appeared in
- FreeBSD 5.2.
- BSD January 16, 2004