Provided by: manpages-ja-dev_0.5.0.0.20180315+dfsg-1_all bug

名前

       pthread_cleanup_push_defer_np,  pthread_cleanup_pop_restore_np - cancelability type を保持
       したままでスレッドのキャンセルクリーンアップハンドラーの push/pop を行う

書式

       #include <pthread.h>

       void pthread_cleanup_push_defer_np(void (*routine)(void *),
                                          void *arg);
       void pthread_cleanup_pop_restore_np(int execute);

       -pthread を付けてコンパイルとリンクを行う。

   glibc 向けの機能検査マクロの要件 (feature_test_macros(7)  参照):

       pthread_cleanup_push_defer_np(), pthread_cleanup_pop_defer_np():
           _GNU_SOURCE

説明

       これらの関数は pthread_cleanup_push(3) と pthread_cleanup_pop(3)  と同じだが、このページで
       説明する点が異なる。

       pthread_cleanup_push(3) と同様に、 pthread_cleanup_push_defer_np() は routine をそのスレッ
       ドの                          クリーンアップハンドラーのスタックに追加する。これに加えて、
       pthread_cleanup_push_defer_np()  は現在の cancelability type も 保存し、cancelability type
       は "deferred" に設定する (pthread_setcanceltype(3) 参照)。  これにより、この関数が呼び出さ
       れる前のスレッドの cancelability type が "asynchronous" であったとしても、キャンセルクリー
       ンアップが行われること が保証される。

       pthread_cleanup_pop(3) と同様に、 pthread_cleanup_pop_restore_np()  はそのスレッドのキャン
       セル  クリーンアップハンドラーのスタックから一番上にあるクリーンアップハンドラー  を取り出
       す。これに加えて、そのスレッドの       cancelability       type       を、対応        する
       pthread_cleanup_push_defer_np() が呼ばれた時点の値に戻す。

       呼び出し側では、これらの関数の呼び出しが同じ関数の中で対となり、かつ  文法的に同じネストレ
       ベル (nesting level) になることを保証しなければ ならない。 pthread_cleanup_push(3)  で説明
       されている他の制限も 適用される。

       以下の一連の呼び出し

           pthread_cleanup_push_defer_np(routine, arg);
           pthread_cleanup_pop_restore_np(execute);

       と以下は等価である (但し、上の方がより簡潔で効率的である)。

           int oldtype;

           pthread_cleanup_push(routine, arg);
           pthread_setcanceltype(PTHREAD_CANCEL_DEFERRED, &oldtype);
           ...
           pthread_setcanceltype(oldtype, NULL);
           pthread_cleanup_pop(execute);

準拠

       これらの関数は非標準の  GNU による拡張である。 そのため、名前に "_np" (nonportable; 移植性
       がない) という接尾辞が 付いている。

関連項目

       pthread_cancel(3),           pthread_cleanup_push(3),           pthread_setcancelstate(3),
       pthread_testcancel(3), pthreads(7)

この文書について

       この  man ページは Linux man-pages プロジェクトのリリース 3.79 の一部 である。プロジェクト
       の説明とバグ報告に関する情報は http://www.kernel.org/doc/man-pages/ に書かれている。