Do not send an uncaught signal to a thread to kill it , because the signal kills the entire process rather than killing just the individual thread. This rule is a specific instance of recommendation SIG02-C. Avoid using signals to implement normal functionality.
...
This code instead uses the pthread_cancel()
function to terminate the thread. The thread continues to run until it reaches a cancellation point. See [Open Group 042004] for lists of functions that are required to be, and allowed to be , cancellation points. If the cancellation type is set to asynchronous, the thread is terminated immediately. However, POSIX only requires the pthread_cancel()
, pthread_setcancelstate()
, and pthread_setcanceltype()
functions to be async-cancel safe. An application that calls other POSIX functions with asynchronous cancellation enabled is non-conforming. Consequently, we recommend disallowing asynchronous cancellation, as expalined by rule POS47-C. Do not use threads that can be cancelled asynchronously.
...
Wiki Markup |
---|
\[[OpenBSD|AA. Bibliography#OpenBSD]\] [{{signal()}} Man Page|http://www.openbsd.org/cgi-bin/man.cgi?query=signal] \[[MKS|AA. Bibliography#MKS]\] [{{pthread_cancel()}} Man Page|http://www.mkssoftware.com/docs/man3/pthread_cancel.3.asp] \[[Open Group 042004|AA. Bibliography#Open Group 04]\] [Threads Overview|http://www.opengroup.org/onlinepubs/009695399/functions/xsh_chap02_09.html] |
...