Man Linux: Main Page and Category List


       pthread_mutexattr_init,                      pthread_mutexattr_destroy,
       pthread_mutexattr_settype, pthread_mutexattr_gettype -  mutex  creation


       #include <pthread.h>

       int pthread_mutexattr_init(pthread_mutexattr_t *attr);

       int pthread_mutexattr_destroy(pthread_mutexattr_t *attr);

       int pthread_mutexattr_settype(pthread_mutexattr_t *attr, int kind);

       int   pthread_mutexattr_gettype(const  pthread_mutexattr_t  *attr,  int


       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 reinitialized.  pthread_mutexattr_destroy
       does nothing in the LinuxThreads 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 checking'' 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  immediately 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_settype  sets the mutex kind attribute in attr to the
       value specified by kind.

       pthread_mutexattr_gettype retrieves the current value of the mutex kind
       attribute in attr and stores it in the location pointed to by kind.


       pthread_mutexattr_init,          pthread_mutexattr_destroy          and
       pthread_mutexattr_gettype always return 0.

       pthread_mutexattr_settype returns 0 on success  and  a  non-zero  error
       code on error.


       On error, pthread_mutexattr_settype returns the following error code:

       EINVAL kind       is       neither       PTHREAD_MUTEX_FAST_NP      nor


       Xavier Leroy <>


       pthread_mutex_init(3), pthread_mutex_lock(3),  pthread_mutex_unlock(3).

                                 LinuxThreads             PTHREAD_MUTEXATTR(3)