The
pthread_rwlock_rdlock()
function acquires a read lock on
lock
provided that
lock
is not presently held for writing and no writer threads are
presently blocked on the lock.
If the read lock cannot be
immediately acquired, the calling thread blocks until it can
acquire the lock.
The
pthread_rwlock_tryrdlock()
function performs the same action, but does not block if the lock
cannot be immediately obtained (i.e., the lock is held for writing
or there are waiting writers).
A thread may hold multiple concurrent read locks.
If so,
pthread_rwlock_unlock()
must be called once for each lock obtained.
The results of acquiring a read lock while the calling thread holds
a write lock are undefined.