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)

tribblix@gmail.com :: GitHub :: Privacy