Linux repositories inspector

pthread_cleanup_push_defer_np(3) - Japanese

Linux
2014-05-28
Aliases: pthread_cleanup_pop_restore_np(3), pthread_cleanup_pop_restore_np(3), pthread_cleanup_pop_restore_np(3), pthread_cleanup_pop_restore_np(3), pthread_cleanup_pop_restore_np(3), pthread_cleanup_pop_restore_np(3)

manpages-ja-dev

Japanese version of the manual pages (for developers)

man-pages-ja

Japanese man (manual) pages from the Japanese Manual Project

manpages-dev

Manual pages about using GNU/Linux for development

man-pages

Linux kernel and C library user-space interface documentation

名前

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; 移植性がない) という接尾辞が 付いている。

この文書について

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