\fBpthread_setcancelstate\fP() は、呼び出したスレッドの
cancelability state に \fIstate\fP で指定された
値を設定する。変更前のスレッドの cancelability state は
-\fIoldstate\fP が指すバッファで返される。
+\fIoldstate\fP ã\81\8cæ\8c\87ã\81\99ã\83\90ã\83\83ã\83\95ã\82¡ã\83¼ã\81§è¿\94ã\81\95ã\82\8cã\82\8bã\80\82
\fIstate\fP 引き数には以下の値のいずれか一つを指定しなければならない。
.TP
\fBPTHREAD_CANCEL_ENABLE\fP
\fBpthread_setcanceltype\fP() は、呼び出したスレッドの
cancelability type に \fItype\fP で指定された値を設定する。
変更前のスレッドの cancelability type は
-\fIoldtype\fP が指すバッファで返される。
+\fIoldtype\fP ã\81\8cæ\8c\87ã\81\99ã\83\90ã\83\83ã\83\95ã\82¡ã\83¼ã\81§è¿\94ã\81\95ã\82\8cã\82\8bã\80\82
\fItype\fP 引き数には以下の値のいずれか一つを指定しなければならない。
.TP
\fBPTHREAD_CANCEL_DEFERRED\fP
.SS 非同期キャンセル
cancelability type を \fBPTHREAD_CANCEL_ASYNCHRONOUS\fP
に設定して役に立つことはめったにない。スレッドは\fIいつでも\fPキャンセルすることができることになるので、スレッドが安全にリソースの確保 (例えば
-\fBmalloc\fP(3) でメモリを割り当てる) や
+\fBmalloc\fP(3) ã\81§ã\83¡ã\83¢ã\83ªã\83¼ã\82\92å\89²ã\82\8aå½\93ã\81¦ã\82\8b) ã\82\84
mutex、セマフォ、ロックなどの獲得を行うことができない。アプリケーションは、スレッドがキャンセルされる際に、これらのリソースがどのような状態にあるかを知る術はないので、リソースの確保が安全ではなくなる。つまり、キャンセルが起こったのが、リソースの確保前なのか、確保中なのか、確保後なのかが分からない。さらに、関数呼び出しの最中にキャンセルが発生すると、いくつかの内部データ構造
(例えば、\fBmalloc\fP(3) 関連の関数が管理している未使用ブロックのリンクリスト)
-が一貫性のない状態のままになってしまう可能性がある。その結果、クリーンアップハンドラが役に立たないものになってしまう。
+ã\81\8cä¸\80貫æ\80§ã\81®ã\81ªã\81\84ç\8a¶æ\85\8bã\81®ã\81¾ã\81¾ã\81«ã\81ªã\81£ã\81¦ã\81\97ã\81¾ã\81\86å\8f¯è\83½æ\80§ã\81\8cã\81\82ã\82\8bã\80\82ã\81\9dã\81®çµ\90æ\9e\9cã\80\81ã\82¯ã\83ªã\83¼ã\83³ã\82¢ã\83\83ã\83\97ã\83\8fã\83³ã\83\89ã\83©ã\83¼ã\81\8cå½¹ã\81«ç«\8bã\81\9fã\81ªã\81\84ã\82\82ã\81®ã\81«ã\81ªã\81£ã\81¦ã\81\97ã\81¾ã\81\86ã\80\82
非同期で安全にキャンセルできる関数は \fIasync\-cancel\-safe functions\fP と呼ばれる。 POSIX.1\-2001
で、非同期で安全にキャンセルできるように求められている関数は \fBpthread_cancel\fP(3),