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

개요

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

pthread_mutexattr_setprotocol(3c)

pthread_...tprotocol(3C) Standard C Library Functions pthread_...tprotocol(3C)

NAME
       pthread_mutexattr_getprotocol,  pthread_mutexattr_setprotocol  - get or
       set protocol attribute of mutex attribute object

SYNOPSIS
       #include <pthread.h>

       int pthread_mutexattr_getprotocol(
            const pthread_mutexattr_t *restrict attr,
            int *restrict protocol);


       int pthread_mutexattr_setprotocol(pthread_mutexattr_t *attr,
            int protocol);

DESCRIPTION
       The pthread_mutexattr_setprotocol() and pthread_mutexattr_getprotocol()
       functions, respectively, set and get the protocol attribute of a  mutex
       attribute  object  pointed  to by attr, which was previously created by
       the pthread_mutexattr_init() function.


       The protocol attribute defines the protocol to be followed in utilizing
       mutexes. The  value  of  protocol  may  be  one  of  PTHREAD_PRIO_NONE,
       PTHREAD_PRIO_INHERIT, or PTHREAD_PRIO_PROTECT, which are defined by the
       header <pthread.h>.


       When  a  thread  owns  a  mutex with the PTHREAD_PRIO_NONE protocol at‐
       tribute, its priority and scheduling are not affected by its mutex own‐
       ership.


       When a thread is blocking higher priority threads because of owning one
       or more mutexes with the PTHREAD_PRIO_INHERIT  protocol  attribute,  it
       executes  at  the higher of its priority or the priority of the highest
       priority thread waiting on any of the mutexes owned by this thread  and
       initialized with this protocol.


       When   a   thread  owns  one  or  more  mutexes  initialized  with  the
       PTHREAD_PRIO_PROTECT protocol, it executes at the higher of its  prior‐
       ity or the highest of the priority ceilings of all the mutexes owned by
       this  thread and initialized with this attribute, regardless of whether
       other threads are blocked on any of these mutexes.


       While a thread is holding a mutex that has been  initialized  with  the
       PRIO_INHERIT  or  PRIO_PROTECT protocol attributes, it will not be sub‐
       ject to being moved to the tail of the scheduling queue at its priority
       in the event that its original priority is changed, such as by  a  call
       to  sched_setparam().  Likewise, when a thread unlocks a mutex that has
       been initialized with the PRIO_INHERIT or PRIO_PROTECT protocol attrib‐
       utes, it will not be subject to being moved to the tail of the schedul‐
       ing queue at its priority in the event that its  original  priority  is
       changed.


       If  a  thread simultaneously owns several mutexes initialized with dif‐
       ferent protocols, it will execute at the highest of the priorities that
       it would have obtained by each of these protocols.


       If a thread makes a call to pthread_mutex_lock() for a mutex  that  was
       initialized  with  the  protocol attribute PTHREAD_PRIO_INHERIT, and if
       the calling thread becomes blocked because the mutex is  owned  by  an‐
       other  thread, then the owner thread inherits the priority level of the
       calling thread for as long as it continues to own the mutex. The imple‐
       mentation updates its execution priority to the maximum of its assigned
       priority and all its inherited priorities. Furthermore, if  this  owner
       thread  becomes blocked on another mutex, the same priority inheritance
       effect will be propagated to the other owner  thread,  in  a  recursive
       manner.


       A thread that uses mutexes initialized with the PTHREAD_PRIO_INHERIT or
       PTHREAD_PRIO_PROTECT   protocol attribute values should have its sched‐
       uling    policy    equal    to    SCHED_FIFO    or    SCHED_RR     (see
       pthread_attr_getschedparam(3C) and pthread_getschedparam(3C)).


       If  a  thread  with scheduling policy equal to SCHED_OTHER uses a mutex
       initialized with the PTHREAD_PRIO_INHERIT or PTHREAD_PRIO_PROTECT  pro‐
       tocol attribute value, the effect on the thread's scheduling and prior‐
       ity is unspecified.


       The _POSIX_THREAD_PRIO_INHERIT and  _POSIX_THREAD_PRIO_PROTECT  options
       are designed to provide features to solve priority inversion due to mu‐
       texes.  A priority inheritance or priority ceiling mutex is designed to
       minimize the dispatch latency of a high priority thread when a low pri‐
       ority thread is holding a mutex required by the high  priority  thread.
       This is a specific need for the realtime application domain.


       Threads  created  by  realtime  applications need to be such that their
       priorities can influence their access  to  system  resources  (CPU  re‐
       sources, at least), in competition with all threads running on the sys‐
       tem.

RETURN VALUES
       Upon  successful  completion,  the  pthread_mutexattr_getprotocol() and
       pthread_mutexattr_setprotocol() functions return 0. Otherwise, an error
       number is returned to indicate the error.

ERRORS
       The pthread_mutexattr_getprotocol() and pthread_mutexattr_setprotocol()
       functions will fail if:

       EINVAL     The value specified by attr is NULL.


       ENOSYS     Neither  of  the  options   _POSIX_THREAD_PRIO_PROTECT   and
                  _POSIX_THREAD_PRIO_INHERIT  is  defined  and the system does
                  not support the function.


       ENOTSUP    The value specified by protocol is an unsupported value.



       The pthread_mutexattr_getprotocol() and pthread_mutexattr_setprotocol()
       functions may fail if:

       EINVAL    The value specified by attr or protocol is invalid.


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


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_attr_getschedparam(3C),  pthread_mutex_init(3C), pthread_mutex‐
       attr_init(3C),  sched_setparam(3C),   sched_setscheduler(3C),   attrib‐
       utes(7), standards(7)

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