Standard C Library Functions pthreadrwlockrdlock(3C)
NAME
pthreadrwlockrdlock, pthreadrwlocktryrdlock - lock or
attempt to lock read-write lock object for reading
SYNOPSIS
cc -mt [ flag... ] file... -lpthread [ library... ]
#include
int pthreadrwlockrdlock(pthreadrwlockt *rwlock);
int pthreadrwlocktryrdlock(pthreadrwlockt *rwlock);
DESCRIPTION
The pthreadrwlockrdlock() function applies a read lock to
the read-write lock referenced by rwlock. The calling
thread acquires the read lock if a writer does not hold the
lock and there are no writers blocked on the lock.
The calling thread does not acquire the lock if a writer
holds the lock or if writers of higher or equal priority are
blocked on the lock; otherwise, the calling thread acquires
the lock. If the read lock is not acquired, the calling
thread blocks until it can acquire the lock.
A thread can hold multiple concurrent read locks on rwlock
(that is, successfully call the pthreadrwlockrdlock()
function n times). If so, the thread must perform matching
unlocks (that is, it must call the pthreadrwlockunlock()
function n times).
The maximum number of concurrent read locks that a thread
can hold on one read-write lock is currently set at 100,000,
though this number could change in a future release. There
is no imposed limit on the number of different threads that
can apply a read lock to one read-write lock.
The pthreadrwlocktryrdlock() function applies a read lock
like the pthreadrwlockrdlock() function, with the excep-
tion that the function fails if the equivalent
pthreadrwlockrdlock() call would have blocked the calling
thread. In no case will the pthreadrwlocktryrdlock()
function ever bloc. It always either acquires the lock or
fails and returns immediately.
SunOS 5.11 Last change: 23 Mar 2005 1
Standard C Library Functions pthreadrwlockrdlock(3C)
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 for reading, upon return from the signal handler
the thread resumes waiting for the read-write lock for read-
ing as if it was not interrupted.
RETURN VALUES
If successful, the pthreadrwlockrdlock() function returns
0. Otherwise, an error number is returned to indicate the
error.
The pthreadrwlocktryrdlock() function returns 0 if the
lock for reading on the read-write lock object referenced by
rwlock is acquired. Otherwise an error number is returned
to indicate the error.
ERORS
The pthreadrwlockrdlock() and pthreadrwlocktryrdlock()
functions will fail if:
EAGAIN The read lock could not be acquired because the
maximum number of read locks by the current thread
for rwlock has been exceeded.
The pthreadrwlockrdlock() function will fail if:
EDEADLK The current thread already owns the read-write
lock for writing.
The pthreadrwlocktryrdlock() function will fail if:
EBUSY The read-write lock could not be acquired for read-
ing because a writer holds the lock or a writer
with the appropriate priority was blocked on it.
ATRIBUTES
See attributes(5) for descriptions of the following attri-
butes:
SunOS 5.11 Last change: 23 Mar 2005 2
Standard C Library Functions pthreadrwlockrdlock(3C)
ATRIBUTE TYPE ATRIBUTE VALUE
Interface Stability Standard
MT-Level MT-Safe
SEE ALSO
pthreadrwlockinit(3C), pthreadrwlockwrlock(3C),
pthreadrwlockattrinit(3C), pthreadrwlockunlock(3C),
attributes(5), standards(5)
SunOS 5.11 Last change: 23 Mar 2005 3
|