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

개요

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

pthread_mutexattr_setprotocol(3c)

Standard C Library Functions
                                             pthread_mutexattr_getprotocol(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
       attribute,  its  priority  and scheduling are not affected by its mutex
       ownership.


       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
       attributes, it will not be subject to being moved to the  tail  of  the
       scheduling  queue at its priority in the event that its original prior‐
       ity 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
       another  thread,  then  the owner thread inherits the priority level of
       the calling thread for as long as it continues to own  the  mutex.  The
       implementation  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
       mutexes.  A  priority inheritance or priority ceiling mutex is designed
       to minimize the dispatch latency of a high priority thread when  a  low
       priority  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
       resources, at least), in competition with all threads  running  on  the
       system.

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),
       attributes(7), standards(7)



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