Computer Science
PTHREAD_MUTEXATTR(3) PTHREAD_MUTEXATTR(3)
NAME
pthread_mutexattr_init, pthread_mutexattr_destroy,
pthread_mutexattr_setkind_np, pthread_mutexattr_getkind_np
- mutex creation attributes
SYNOPSIS
#include <pthread.h>
int pthread_mutexattr_init(pthread_mutexattr_t *attr);
int pthread_mutexattr_destroy(pthread_mutexattr_t *attr);
int pthread_mutexattr_setkind_np(pthread_mutexattr_t
*attr, int kind);
int pthread_mutexattr_getkind_np(const pthread_mutexattr_t
*attr, int *kind);
DESCRIPTION
Mutex attributes can be specified at mutex creation time,
by passing a mutex attribute object as second argument to
pthread_mutex_init(3). Passing NULL is equivalent to
passing a mutex attribute object with all attributes set
to their default values.
pthread_mutexattr_init initializes the mutex attribute
object attr and fills it with default values for the
attributes.
pthread_mutexattr_destroy destroys a mutex attribute
object, which must not be reused until it is reinitial-
ized. pthread_mutexattr_destroy does nothing in the Lin-
uxThreads implementation.
LinuxThreads supports only one mutex attribute: the mutex
kind, which is either PTHREAD_MUTEX_FAST_NP for ``fast''
mutexes, PTHREAD_MUTEX_RECURSIVE_NP for ``recursive''
mutexes, or PTHREAD_MUTEX_ERRORCHECK_NP for ``error check-
ing'' mutexes. As the NP suffix indicates, this is a non-
portable extension to the POSIX standard and should not be
employed in portable programs.
The mutex kind determines what happens if a thread
attempts to lock a mutex it already owns with
pthread_mutex_lock(3). If the mutex is of the ``fast''
kind, pthread_mutex_lock(3) simply suspends the calling
thread forever. If the mutex is of the ``error checking''
kind, pthread_mutex_lock(3) returns immediately with the
error code EDEADLK. If the mutex is of the ``recursive''
kind, the call to pthread_mutex_lock(3) returns immedi-
ately with a success return code. The number of times the
thread owning the mutex has locked it is recorded in the
mutex. The owning thread must call pthread_mutex_unlock(3)
the same number of times before the mutex returns to the
unlocked state.
The default mutex kind is ``fast'', that is,
PTHREAD_MUTEX_FAST_NP.
pthread_mutexattr_setkind_np sets the mutex kind attribute
in attr to the value specified by kind.
pthread_mutexattr_getkind_np retrieves the current value
of the mutex kind attribute in attr and stores it in the
location pointed to by kind.
RETURN VALUE
pthread_mutexattr_init, pthread_mutexattr_destroy and
pthread_mutexattr_getkind_np always return 0.
pthread_mutexattr_setkind_np returns 0 on success and a
non-zero error code on error.
ERRORS
On error, pthread_mutexattr_setkind_np returns the follow-
ing error code:
EINVAL kind is neither PTHREAD_MUTEX_FAST_NP nor
PTHREAD_MUTEX_RECURSIVE_NP nor
PTHREAD_MUTEX_ERRORCHECK_NP
AUTHOR
Xavier Leroy <Xavier.Leroy@inria.fr>
SEE ALSO
pthread_mutex_init(3), pthread_mutex_lock(3),
pthread_mutex_unlock(3).
LinuxThreads 1
Back to the index