Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

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]

...