PTHREAD_SUSPEND_NP(3) Library Functions Manual PTHREAD_SUSPEND_NP(3)

pthread_suspend_np, pthread_resume_npsuspend/resume the given thread

POSIX Threads Library (libpthread, -lpthread)

#include <pthread.h>

int
pthread_suspend_np(pthread_t thread);

int
pthread_resume_np(pthread_t thread);

The () 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. In other words, pthread_resume_np() resumes the thread given as argument, if it was suspended.

Both functions return 0 on success and an error number indicating the reason for the failure.

These functions are non-standard extensions.

The pthread_suspend_np() function may fail if:

[]
The thread requested to suspend was the currently running thread.
[]
The supplied thread was invalid.

The pthread_resume_np() function may fail if:

[]
The supplied thread was invalid.

Some () 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 () the NetBSD implementation does not 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.

pthread_attr_setcreatesuspend_np(3), pthread_self(3)

July 9, 2010 NetBSD 11.0