pthread_rwlock_init - Initializes a read-write lock object
const pthread_rwlockattr_t *attr );
DECthreads POSIX 1003.1c Library (libpthread.so)
Read-write lock object to be initialized. Read-write lock
attributes object that defines the characteristics of the
read-write lock to be initialized.
This routine initializes a read-write lock object with the
attributes specified by the read-write lock attributes
object specified in attr. A read-write lock is a synchronization
object that serializes access to shared information
that needs to be read frequently and written only
occasionally. A thread can acquire a read-write lock for
shared read access or for exclusive write access.
Upon successful completion of this routine, the read-write
lock is initialized and set to the unlocked state. If attr
is set to NULL, the default read-write lock attributes are
used; the effect is the same as passing the address of a
default read-write lock attributes object. Once initialized,
the lock can be used any number of times without
Results of calling this routine are undefined if attr
specifies an already initialized read-write lock or if
rwlock is used without first being initialized.
If this routine returns unsuccessfully, rwlock is not initialized
and the contents of rwlock are undefined.
A read-write lock is a resource of the process, not part
of any particular thread. A read-write lock is neither
destroyed not unlocked automatically when any thread
exits. Because read-write locks are shared, they may be
allocated in heap or static memory, but not on a stack.
In cases where default read-write lock attributes are
appropriate, you may use the PTHREAD_RWLOCK_INITIALIZER
macro to statically initialize the lock object without
calling this routine. The effect is equivalent to dynamic
initialization by a call to pthread_rwlock_init with attr
specified as NULL, except that no error checks are performed.
Statically initialized read-write locks need not
be destroyed using pthread_rwlock_destroy.
Use the PTHREAD_RWLOCK_INITIALIZER macro as follows:
pthread_rwlock_t rwlock= PTHREAD_RWLOCK_INITIALIZER;
If an error condition occurs, this routine returns an
integer value indicating the type of error. Possible
return values are as follows: Successful completion. The
system lacks the necessary resources to initialize the
read-write lock. The implementation has detected an
attempt to reinitialize the read-write lock (a previously
initialized, but not yet destroyed read-write lock
object). The value specified by attr is not a valid
attributes block. Insufficient memory exists to initialize
the read-write lock. The caller does not have privileges
to perform this operation.
Manuals: Guide to DECthreads and Programmer's Guide
[ Back ]