THR_SUSPEND(3C)         Standard C Library Functions         THR_SUSPEND(3C)
NAME
       thr_suspend, thr_continue - suspend or continue thread execution
SYNOPSIS
       cc -mt [ 
flag... ] 
file...[ 
library... ]
       #include <thread.h>       
int thr_suspend(
thread_t target_thread);       
int thr_continue(
thread_t target_thread);
DESCRIPTION
       The 
thr_suspend() function immediately suspends the execution of the
       thread specified by 
target_thread. On successful return from       
thr_suspend(), the suspended thread is no longer executing. Once a
       thread is suspended, subsequent calls to 
thr_suspend() have no
       effect.
       The 
thr_continue() function resumes the execution of a suspended
       thread.  Once a suspended thread is continued, subsequent calls to       
thr_continue() have no effect.
       A suspended thread will not be awakened by any mechanism other than a
       call to 
thr_continue().  Signals and the effect of calls to       
mutex_unlock(3C), 
rw_unlock(3C), 
sema_post(3C), 
cond_signal(3C), and       
cond_broadcast(3C) remain pending until the execution of the thread
       is resumed by 
thr_continue().
RETURN VALUES
       If successful, the 
thr_suspend() and 
thr_continue() functions return       
0. Otherwise, a non-zero value is returned to indicate the error.
ERRORS
       The 
thr_suspend() and 
thr_continue() functions will fail if:       
ESRCH                 The 
target_thread cannot be found in the current process.
ATTRIBUTES
       See 
attributes(7) for descriptions of the following attributes:
       +---------------+-----------------+
       |ATTRIBUTE TYPE | ATTRIBUTE VALUE |
       +---------------+-----------------+
       |MT-Level       | MT-Safe         |
       +---------------+-----------------+
SEE ALSO
       thr_create(3C), 
thr_join(3C), 
attributes(7), 
standards(7)WARNINGS
       The 
thr_suspend() function is extremely difficult to use safely
       because it suspends the target thread with no concern for the target
       thread's state.  The target thread could be holding locks, waiting
       for a lock, or waiting on a condition variable when it is
       unconditionally suspended. The thread will not run until       
thr_continue() is applied, regardless of any calls to 
mutex_unlock(),       
cond_signal(), or 
cond_broadcast() by other threads. Its existence on
       a sleep queue can interfere with the waking up of other threads that
       are on the same sleep queue.
       The 
thr_suspend() and 
thr_continue() functions should be avoided.
       Mechanisms that involve the cooperation of the targeted thread, such
       as mutex locks and condition variables, should be employed instead.
                               March 22, 2002                THR_SUSPEND(3C)