|PTHREAD_RWLOCK_TIMEDRDLOCK(3)||FreeBSD Library Functions Manual||PTHREAD_RWLOCK_TIMEDRDLOCK(3)|
NAMEpthread_rwlock_timedrdlock — acquire a read-write lock for reading or give up after a specified period
LIBRARYPOSIX Threads Library (libpthread, -lpthread)
SYNOPSIS#include < pthread.h>
pthread_rwlock_timedrdlock( pthread_rwlock_t *rwlock, const struct timespec *abs_timeout);
DESCRIPTIONThis function acquires a read lock on the read-write lock rwlock. However, if the lock cannot be acquired without waiting for another 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 NOTESTo prevent writer starvation, writers are favored over readers.
RETURN VALUESIf successful, the pthread_rwlock_timedrdlock() function will return zero. Otherwise, an error number will be returned to indicate the error.
This function shall not return an error code of EINTR.
ERRORSThe 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 because the maximum 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.
STANDARDSThe pthread_rwlock_timedrdlock() function is expected to conform to ISO/IEC 9945-1:1996 (“POSIX.1”).
HISTORYThe pthread_rwlock_timedrdlock() function first appeared in FreeBSD 5.2.
|January 16, 2004||FreeBSD|