スレッドの取り消しは、取り消しが安全な場合にだけ行なってください。pthread 規格では、下記のような取り消しポイントが規定されています。
pthread_testcancel(3THR) 呼び出しを通してプログラムで設定されるスレッドの取り消しポイント
pthread_cond_wait(3THR) または pthread_cond_timedwait(3THR) で特定の条件の発生を待っているスレッド
pthread_join(3THR) で他のスレッドの終了を待っているスレッド
sigwait(2) でブロックされたスレッド
ある種の標準ライブラリコール。通常、これらはスレッドがブロックできる関数です。詳細は、cancellation(3THR) のマニュアルページを参照してください。
デフォルトでは、取り消しが有効 (使用可能) です。アプリケーションで取り消しを無効 (使用不可) にした場合は、再び有効にするまで、すべての取り消し要求が据え置かれます。
取り消しを無効にする方法については、pthread_setcancelstate(3THR)を参照してください。