pthread_mutex_init(3c) 맨 페이지 - 윈디하나의 솔라나라

개요

섹션
맨 페이지 이름
검색(S)

pthread_mutex_init(3c)

Standard C Library Functions                            pthread_mutex_init(3C)



NAME
       pthread_mutex_init,  pthread_mutex_destroy  -  initialize  or destroy a
       mutex

SYNOPSIS
       #include <pthread.h>

       int pthread_mutex_init(pthread_mutex_t *restrict mutex,
            const pthread_mutexattr_t *restrict attr);


       int pthread_mutex_destroy(pthread_mutex_t *mutex);


       pthread_mutex_t mutex= PTHREAD_MUTEX_INITIALIZER;


       pthread_mutex_t mutex = PTHREAD_RECURSIVE_MUTEX_INITIALIZER_NP;


       pthread_mutex_t mutex = PTHREAD_ERRORCHECK_MUTEX_INITIALIZER_NP;

DESCRIPTION
       The pthread_mutex_init() function initializes the mutex  referenced  by
       mutex  with  attributes specified by attr. If attr is NULL, the default
       mutex attributes are used; the  effect  is  the  same  as  passing  the
       address  of a default mutex attributes object. Upon successful initial‐
       ization, the state of the mutex becomes initialized and unlocked.


       Except for robust mutexes, attempting to initialize an already initial‐
       ized mutex results in undefined behavior.


       The  pthread_mutex_destroy()  function destroys the mutex object refer‐
       enced by mutex; the mutex object becomes, in effect,  uninitialized.  A
       destroyed     mutex     object     can    be    re-initialized    using
       pthread_mutex_init(); the results of otherwise referencing  the  object
       after it has been destroyed are undefined.


       It is safe to destroy an initialized mutex that is unlocked. Attempting
       to destroy a locked mutex results in undefined behavior.


       In cases where default mutex  attributes  are  appropriate,  the  macro
       PTHREAD_MUTEX_INITIALIZER  can  be  used to initialize mutexes that are
       statically allocated. The effect is equivalent to  dynamic  initializa‐
       tion by a call to pthread_mutex_init() with parameter attr specified as
       NULL, except that no error checks are performed.


       In cases where recursive mutex attributes are  appropriate,  the  macro
       PTHREAD_RECURSIVE_MUTEX_INITIALIZER_NP   can   be  used  to  initialize
       mutexes that are statically allocated.  The  effect  is  equivalent  to
       dynamic initialization by a call to pthread_mutex_init() with parameter
       attr initialized and with type set to  PTHREAD_MUTEX_RECURSIVE,  except
       that no error checks are performed.


       In  cases where error check mutex attributes are appropriate, the macro
       PTHREAD_ERRORCHECK_MUTEX_INITIALIZER_NP  can  be  used  to   initialize
       mutexes  that  are  statically  allocated.  The effect is equivalent to
       dynamic initialization by a call to pthread_mutex_init() with parameter
       attr  initialized and with type set to PTHREAD_MUTEX_ERRORCHECK, except
       that no error checks are performed.

RETURN VALUES
       If successful,  the  pthread_mutex_init()  and  pthread_mutex_destroy()
       functions  return 0. Otherwise, an error number is returned to indicate
       the error.

ERRORS
       The pthread_mutex_init() function will fail if:

       EAGAIN    The system lacked the necessary resources (other than memory)
                 to initialize another mutex.


       EBUSY     An  attempt was detected to re-initialize a robust mutex pre‐
                 viously initialized but not yet destroyed. See pthread_mutex‐
                 attr_setrobust(3C).


       EINVAL    An  attempt was detected to re-initialize a robust mutex pre‐
                 viously initialized with a different set of  attributes.  See
                 pthread_mutexattr_setrobust(3C).


       ENOMEM    Insufficient memory exists to initialize the mutex.


       EPERM     The  caller does not have the privilege to perform the opera‐
                 tion.



       The pthread_mutex_init() function may fail if:

       EBUSY     An attempt was detected to re-initialize  the  object  refer‐
                 enced  by  mutex,  a mutex previously initialized but not yet
                 destroyed.


       EINVAL    The value specified by attr or mutex is invalid.



       The pthread_mutex_destroy() function may fail if:

       EBUSY     An attempt was detected to destroy the object  referenced  by
                 mutex  while  it  is locked or referenced (for example, while
                 being used in a pthread_cond_wait(3C) or  pthread_cond_timed‐
                 wait(3C)) by another thread.


       EINVAL    The value specified by mutex is invalid.


ATTRIBUTES
       See attributes(7) for descriptions of the following attributes:


       tab()  box; cw(2.75i) |cw(2.75i) lw(2.75i) |lw(2.75i) ATTRIBUTE TYPEAT‐
       TRIBUTE VALUE _ Interface StabilityCommitted _ MT-LevelMT-Safe _  Stan‐
       dardSee standards(7).


SEE ALSO
       pthread_mutexattr_setprotocol(3C),               pthread_cond_wait(3C),
       pthread_mutex_lock(3C),           pthread_mutexattr_setprioceiling(3C),
       pthread_mutexattr_setpshared(3C),      pthread_mutexattr_setrobust(3C),
       pthread_mutexattr_settype(3C), attributes(7), mutex(7), standards(7)



Oracle Solaris 11.4               16 May 2014           pthread_mutex_init(3C)
맨 페이지 내용의 저작권은 맨 페이지 작성자에게 있습니다.
RSS ATOM XHTML 5 CSS3