PTHREAD_RWLOCK_INIT(3C) Standard C Library Functions PTHREAD_RWLOCK_INIT(3C)
NAME
pthread_rwlock_init, pthread_rwlock_destroy - initialize or destroy read-
write lock object
SYNOPSIS
cc -mt [
flag... ]
file... -lpthread [
library... ]
#include <pthread.h>
int pthread_rwlock_init(
pthread_rwlock_t *restrict rwlock,
const pthread_rwlockattr_t *restrict attr);
int pthread_rwlock_destroy(
pthread_rwlock_t **rwlock);
pthread_rwlock_t rwlock=
PTHREAD_RWLOCK_INITIALIZER;
DESCRIPTION
The
pthread_rwlock_init() function initializes the read-write lock
referenced by
rwlock with the attributes referenced by
attr. If
attr is
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 being re-initialized. Upon successful initialization, the state
of the read-write lock becomes initialized and unlocked. Results are
undefined if
pthread_rwlock_init() is called specifying an already
initialized read-write lock. Results are undefined if a read-write lock
is used without first being initialized.
If the
pthread_rwlock_init() function fails,
rwlock is not initialized
and the contents of
rwlock are undefined.
The
pthread_rwlock_destroy() function destroys the read-write lock object
referenced by
rwlock and releases any resources used by the lock. The
effect of subsequent use of the lock is undefined until the lock is re-
initialized by another call to
pthread_rwlock_init(). An implementation
may cause
pthread_rwlock_destroy() to set the object referenced by
rwlock to an invalid value. Results are undefined if
pthread_rwlock_destroy() is called when any thread holds
rwlock.
Attempting to destroy an uninitialized read-write lock results in
undefined behaviour. A destroyed read-write lock object can be re-
initialized using
pthread_rwlock_init(); the results of otherwise
referencing the read-write lock object after it has been destroyed are
undefined.
In cases where default read-write lock attributes are appropriate, the
macro
PTHREAD_RWLOCK_INITIALIZER can be used to initialize read-write
locks that are statically allocated. The effect is equivalent to dynamic
initialization by a call to
pthread_rwlock_init() with the parameter
attr specified as NULL, except that no error checks are performed.
RETURN VALUES
If successful, the
pthread_rwlock_init() and
pthread_rwlock_destroy() functions return
0. Otherwise, an error number is returned to indicate
the error.
ERRORS
The
pthread_rwlock_init() and
pthread_rwlock_destroy() functions will
fail if:
EINVAL The value specified by
attr is invalid.
EINVAL The value specified by
rwlock is invalid.
ATTRIBUTES
See
attributes(7) for descriptions of the following attributes:
+--------------------+-----------------+
| ATTRIBUTE TYPE | ATTRIBUTE VALUE |
+--------------------+-----------------+
|Interface Stability | Standard |
+--------------------+-----------------+
|MT-Level | MT-Safe |
+--------------------+-----------------+
SEE ALSO
pthread_rwlock_rdlock(3C),
pthread_rwlock_unlock(3C),
pthread_rwlock_wrlock(3C),
pthread_rwlockattr_init(3C),
attributes(7),
standards(7) March 23, 2005
PTHREAD_RWLOCK_INIT(3C)