THR_SUSPEND(3C)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_sus‐
pend(), 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 tomu‐
tex_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(5) for descriptions of the following attributes:
┌───────────────┬─────────────────┐
│ATTRIBUTE TYPE │ ATTRIBUTE VALUE │
├───────────────┼─────────────────┤
│MT-Level │ MT-Safe │
└───────────────┴─────────────────┘
SEE ALSOthr_create(3C), thr_join(3C), attributes(5), standards(5)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 sus‐
pended. 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.
Mar 22, 2002 THR_SUSPEND(3C)