pthread_rwlock_rdlock, pthread_rwlock_tryrdlock - lock a read-write lock
object for reading
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.
PPPPaaaaggggeeee 1111 [ Back ]