A method for managing the suspension and resumption of threads on an
individual basis in an information handling system having an operating
system (OS) kernel and a user process having multiple threads of
execution. An originating thread issues a pthread_kill( ) service request
to the OS kernel to send a specified signal (thread-stop or
thread-continue) to a specified target thread within the same process to
suspend or resume execution of the target thread. More particularly, in
response to a request from a thread to suspend the execution of the
target thread, the OS kernel sends a thread-stop signal (SIGTHSTOP) to
the target thread, transferring control within the target thread from a
normally executing program portion to a signal interrupt routine. Upon
gaining control, the signal interrupt routine issues a service request to
the kernel to stop the target thread. In response to a request from a
thread to resume execution of the target thread, the OS kernel sends a
thread-continue signal (SIGTHCONT) to the target thread to post the
waiting target thread and return control to the signal interrupt routine.
Upon regaining control, the signal interrupt routine returns control to
the program at the point of interrupt.