MyWebUniversity.com Home Page
 



OpenSolaris man pages main menu


Standard C Library Functions                pthreadcondwait(3C)



NAME
     pthreadcondwait,                   pthreadcondtimedwait,
     pthreadcondreltimedwaitnp - wait on a condition

SYNOPSIS
     cc -mt [ flag... ] file... -lpthread [ library... ]
     #include 

     int pthreadcondwait(pthreadcondt *restrict cond,
          pthreadmutext *restrict mutex);


     int pthreadcondtimedwait(pthreadcondt *restrict cond,
          pthreadmutext *restrict mutex,
          const struct timespec *restrict abstime);


     int pthreadcondreltimedwaitnp(pthreadcondt *cond,
          pthreadmutext *mutex, const struct timespec *reltime);


DESCRIPTION
     The   pthreadcondwait(),   pthreadcondtimedwait(),   and
     pthreadcondreltimedwaitnp()  functions  are used to block
     on a condition variable. They are called with  mutex  locked
     by the calling thread or undefined behavior will result.


     These functions atomically release mutex and cause the  cal-
     ling  thread to block on the condition variable cond. Atomi-
     cally here means ``atomically  with  respect  to  access  by
     another   thread  to  the mutex and then the condition vari-
     able." That is, if another thread is  able  to  acquire  the
     mutex  after the about-to-block thread has released it, then
     a    subsequent    call    to    pthreadcondsignal()    or
     pthreadcondbroadcast()  in  that  thread  behaves as if it
     were issued after the about-to-block thread has blocked.


     Upon successful return, the mutex has  been  locked  and  is
     owned  by  the  calling  thread.  If mutex is a robust mutex
     where an owner terminated while holding  the  lock  and  the
     state  is recoverable, the mutex is acquired even though the
     function returns an error value.


     When using condition variables there  is  always  a  boolean
     predicate, an invariant, associated with each condition wait
     that must be true before the thread should proceed. Spurious
     wakeups         from         the        pthreadcondwait(),
     pthreadcondtimedwait(), or  pthreadcondreltimedwaitnp()
     functions    could    occur.    Since    the   return   from



SunOS 5.11          Last change: 11 Nov 2008                    1






Standard C Library Functions                pthreadcondwait(3C)



     pthreadcondwait(),      pthreadcondtimedwait(),       or
     pthreadcondreltimedwaitnp() does not imply anything about
     the value of this predicate, the predicate should always  be
     reevaluated.


     The  order  in  which  blocked  threads  are   awakened   by
     pthreadcondsignal()  or pthreadcondbroadcast() is deter-
     mined by the scheduling policy. See pthreads(5).


     The effect of using  more  than  one  mutex  for  concurrent
     pthreadcondwait(),       pthreadcondtimedwait(),      or
     pthreadcondreltimedwaitnp() operations on the same condi-
     tion variable will result in undefined behavior.


     A condition wait (whether timed or not)  is  a  cancellation
     point.  When  the  cancelability enable state of a thread is
     set to PTHREADCANCELDEFERED, a side effect of acting upon
     a cancellation request while in a condition wait is that the
     mutex is reacquired before calling  the  first  cancellation
     cleanup handler.


     A thread that has been unblocked because it  has  been  can-
     celed  while  blocked  in  a  call to pthreadcondwait() or
     pthreadcondtimedwait() does not consume any condition sig-
     nal that may be directed concurrently at the condition vari-
     able if there are other threads  blocked  on  the  condition
     variable.


     The  pthreadcondtimedwait()  function  is  the   same   as
     pthreadcondwait()  except that an error is returned if the
     absolute time specified by abstime passes (that  is,  system
     time equals or exceeds abstime) before the condition cond is
     signaled or broadcast, or if the absolute time specified  by
     abstime has already been passed at the time of the call. The
     abstime argument is of  type  struct  timespec,  defined  in
     time.h(3HEAD).      When      such      time-outs     occur,
     pthreadcondtimedwait() will nonetheless release and  reac-
     quire   the   mutex   referenced   by  mutex.  The  function
     pthreadcondtimedwait() is also a cancellation point.


     The  pthreadcondreltimedwaitnp()  function  is   a   non-
     standard  extension provided by the Solaris version of POSIX
     threads as indicated by the ``np''  (non-portable)  suffix.
     The  pthreadcondreltimedwaitnp()  function is the same as
     pthreadcondtimedwait() except that  the  reltime  argument
     specifies a non-negative time relative to the current system



SunOS 5.11          Last change: 11 Nov 2008                    2






Standard C Library Functions                pthreadcondwait(3C)



     time rather than an absolute time. The reltime  argument  is
     of  type struct timespec, defined in time.h(3HEAD). An error
     value is returned if the relative time passes (that is, sys-
     tem time equals or exceeds the starting system time plus the
     relative time) before the  condition  cond  is  signaled  or
     broadcast.        When       such       timeouts      occur,
     pthreadcondreltimedwaitnp() releases and  reacquires  the
     mutex         referenced        by        mutex.         The
     pthreadcondreltimedwaitnp() function is also a  cancella-
     tion point.


     If a signal is delivered to a thread waiting for a condition
     variable,  upon  return  from  the signal handler the thread
     resumes waiting for the condition variable as if it was  not
     interrupted, or it returns 0 due to spurious wakeup.

RETURN VALUES
     Except in the case of ETIMEDOUT, EOWNERDEAD, or ENOTRECOVER-
     ABLE,  all  of  these  error checks act as if they were per-
     formed immediately at the beginning of  processing  for  the
     function  and  cause  an  error  return, in effect, prior to
     modifying the state of the mutex specified by mutex  or  the
     condition variable specified by cond.


     Upon successful completion, 0  is  returned.  Otherwise,  an
     error value is returned to indicate the error.

ERORS
     These functions will fail if:

     EPERM    The mutex type is PTHREADMUTEXERORCHECK  or  the
              mutex  is  a  robust  mutex, and the current thread
              does not own the mutex.



     The  pthreadcondtimedwait() function will fail if:

     ETIMEDOUT    The  absolute  time  specified  by  abstime  to
                  pthreadcondtimedwait() has passed.



     The pthreadcondreltimedwaitnp() function will fail if:

     EINVAL       The value specified by reltime is invalid.


     ETIMEDOUT    The  relative  time  specified  by  reltime  to
                  pthreadcondreltimedwaitnp() has passed.



SunOS 5.11          Last change: 11 Nov 2008                    3






Standard C Library Functions                pthreadcondwait(3C)



     These functions may fail if:

     EINVAL    The value specified by cond,  mutex,  abstime,  or
               reltime is invalid.


     EINVAL    Different mutexes  were  supplied  for  concurrent
               operations on the same condition variable.



     If the mutex specified by mutex is a robust mutex  (initial-
     ized  with  the  robustness attribute PTHREADMUTEXROBUST),
     the   pthreadcondwait(),   pthreadcondtimedwait(),   and
     pthreadcondreltimedwaitnp()  functions  will,  under  the
     specified conditions, return  the  following  error  values.
     For complete information, see the pthreadmutexlock(3C) and
     pthreadmutexattrsetrobust(3C) manual pages.

     EOWNERDEAD         The last owner of this mutex  died  while
                        holding  the  mutex, leaving the state it
                        was protecting possibly inconsistent. The
                        mutex is now owned by the caller.


     ENOTRECOVERABLE    The mutex was protecting state  that  has
                        now  been  left  irrecoverable. The mutex
                        has not been acquired.


ATRIBUTES
     See attributes(5) for descriptions of the  following  attri-
     butes:



     
           ATRIBUTE TYPE               ATRIBUTE VALUE       
    
     Interface Stability          Standard                    
    
     MT-Level                     MT-Safe                     
    


SEE ALSO
     pthreadcondsignal(3C),         pthreadcondbroadcast(3C),
     pthreadmutexlock(3C),     pthreadmutexattrgetrobust(3C),
     time.h(3HEAD),  attributes(5),  condition(5),   pthreads(5),
     standards(5)





SunOS 5.11          Last change: 11 Nov 2008                    4



OpenSolaris man pages main menu

Contact us      |       About us      |       Term of use      |       Copyright © 2000-2010 MyWebUniversity.com ™