pthread_rwlock_rdlock(3P) pthread_rwlock_rdlock(3P)
pthread_rwlock_rdlock, pthread_rwlock_tryrdlock - lock a read-write lock
object for reading
#include <pthread.h>
int pthread_rwlock_rdlock(pthread_rwlock_t *rwlock);
int pthread_rwlock_tryrdlock(pthread_rwlock_t *rwlock);
Read-write locks allow a thread to exclusively lock some shared data
while updating that data, or allow any number of threads to have
simultaneous read-only access to the data. The pthread_rwlock_rdlock()
and pthread_rwlock_tryrdlock() functions apply a read lock to the readwrite
lock object referenced by rwlock. The calling thread will only
acquire the lock if a writer does not own the lock. A thread that calls
pthread_rwlock_rdlock() will block until it can gain the read-write lock
for reading, and retains ownership until it calls
pthread_rwlock_unlock(). Only the thread that locked a read-write lock
should unlock it. When unlocked, if there are both readers and writers
of the same priority waiting for the read-write lock, writers will be
scheduled before readers.
A single thread may hold recursive read locks on a read-write lock. In
this case there must be a matching number of unlocks by the thread before
the read-write lock can be released.
If a thread waiting for a read-write lock receives a signal, upon return
from the signal handler, the thread resumes waiting for the read-write
lock as if there was no interrupt.
All of the read-write lock functions return zero if successful;
otherwise, an error number is returned.
pthread_rwlock_tryrdlock() can return the following error:
[EBUSY] The read-write lock is currently held by a writer.
pthread_rwlock_init(3P), pthread_rwlock_wrlock(3P),
pthread_rwlock_unlock(3P), pthread_rwlockattr_init(3P),
pthread_rwlockattr_setpshared(3P).
PPPPaaaaggggeeee 1111 [ Back ]
|