pthread_rwlock_rdlock(3T)pthread_rwlock_rdlock(3T)NAMEpthread_rwlock_rdlock(), pthread_rwlock_tryrdlock() - lock or attempt
to lock a read-write lock for reading
SYNOPSISPARAMETERS
rwlock Pointer to the read-write lock to be locked for read‐
ing.
DESCRIPTION
The function applies a read lock to the read-write lock object refer‐
enced by rwlock. The calling thread shall acquire a read lock if a
writer does not hold the lock and there are no writers blocked on the
lock. It is unspecified whether the calling thread acquires the lock
when a writer does not hold the lock and there are writers waiting for
the lock. If a writer holds the lock, the calling thread shall not
acquire the read lock. If the read lock is not acquired, the calling
thread blocks (that is, it does not return from the call) until it can
acquire the lock. Results are undefined if the calling thread cur‐
rently owns a write lock on rwlock.
Implementations shall be allowed to favor writers over readers to avoid
writer starvation.
A thread may hold multiple concurrent locks on rwlock (that is, suc‐
cessfully call the function n times). If so, the thread must perform
the matching unlocks (that is, it must call the function n times).
The function applies a read lock as in the function with the exception
that the function fails if any thread holds a write lock on rwlock or
there are writers blocked on rwlock.
Results are undefined if any of these functions are called with an
uninitialized read-write lock.
If a signal is delivered to a thread waiting for a read-write lock,
upon return from the signal handler, the thread shall resume waiting
for the read-write lock as if it was not interrupted.
RETURN VALUE
Upon successful completion, and return zero. Otherwise, an error number
is returned to indicate the error (the variable is not set).
ERRORS
If any of the following occur, the function returns the corresponding
error number:
[EBUSY] The read-write lock rwlock could not be acquired
for reading because a writer holds the lock or
was blocked on it.
For each of the following conditions, if the condition is detected, the
and functions return the corresponding error number:
[EINVAL] The value specified by rwlock does not refer to
an initialized read-write lock.
[EDEADLK] The current thread already owns the read-write
lock for writing.
[EAGAIN] The read lock could not be acquired because the
maximum number of read locks for rwlock has been
exceeded. This error is not detected on HP-UX.
AUTHOR
and were developed by X/Open.
SEE ALSOpthread_rwlock_init(3T), pthread_rwlock_destroy(3T),
pthread_rwlock_trywrlock(3T), pthread_rwlock_wrlock(3T),
pthread_rwlock_unlock(3T).
STANDARDS CONFORMANCE
Pthread Library pthread_rwlock_rdlock(3T)