pthread_rwlock_timedrdlock
- acquire a read-write lock for reading or give up after a specified period
LIBRARY
Lb libpthread
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
Fa rwlock .
However, if the lock cannot be
acquired without waiting for another thread to
unlock the lock,
this wait shall be terminated when
Fa abs_timeout
expires.
A thread may hold multiple concurrent read locks.
The
pthread_rwlock_unlock3
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
Fa 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 readers.
RETURN VALUES
If 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
Er EINTR .
ERRORS
The
pthread_rwlock_timedrdlock ();
function will fail if:
Bq Er ETIMEDOUT
The lock could not be acquired before the specified timeout expired.
The
pthread_rwlock_timedrdlock ();
function may fail if:
Bq Er EAGAIN
The read lock could not be
acquired because the maximum number of read locks for
Fa rwlock
would be exceeded.
Bq Er EDEADLK
The calling thread already holds a write lock on
Fa rwlock .
Bq Er EINVAL
The value specified by
Fa rwlock
does not refer to an initialized read-write lock object,
or the
Fa abs_timeout
nanosecond value is less than zero or
greater than or equal to 1 billion.