PTHREAD_RWLOCK_INIT(3C) Standard C Library Functions

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)

December 11, 2022 PTHREAD_RWLOCK_INIT(3C)

tribblix@gmail.com :: GitHub :: Privacy