int
pthread_suspend_np(pthread_t thread)
int
pthread_resume_np(pthread_t thread)
)
function suspends the
thread
given as argument.
If
thread
is the currently running thread as returned by
pthread_self(3),
the function fails and returns
EDEADLK.
Otherwise, it removes the named thread from the running queue, and
adds it to the suspended queue.
The
thread
will remain blocked until
pthread_resume_np()
is called on it.
pthread_resume_np()
resumes the
thread
given as argument, if it was suspended.
)
function returns 0 on success and an error number indicating the
reason for the failure.
The
pthread_resume_np()
function always returns 0.
)
shall fail if:
EDEADLK]
pthread_resume_np()
never fails.
)
implementations may allow suspending the current thread.
This is dangerous, because the semantics of the function would then
require the scheduler to schedule another thread, causing a thread
context switch.
Since that context switch can happen in a signal handler by someone
calling
pthread_suspend_np()
in a signal handler, this is currently not allowed.
In
pthread_resume_np()
we don't check if the
thread
argument is not already suspended.
Some implementations might return an error condition if
pthread_resume_np()
is called on a non-suspended thread.