UI, Win32, and OS/2 all have a function to force a thread to suspend its execution for an arbitrary length of time and a second function to cause the thread to resume (e.g., in UI, thr_suspend() and thr_continue()).
These functions were included for the purpose of allowing such things as garbage collectors and debuggers to gain full control of a process. As such, they are useful, however for almost any other purpose they are the wrong thing. Because a suspended thread may hold locks that a controller thread needs, it is almost impossible to use them
effectively.
POSIX does not include them in its API. Instead it allows the vendors to write private versions of these functions in the vendor’s debugging interface.