PTHREAD_CLEANUP_PUSH_DEFER_NP

Section: Linux Programmer's Manual (3)
Updated: 2017-09-15
Index JM Home Page
 

名前

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 プロジェクトのリリース 5.10 の一部である。プロジェクトの説明とバグ報告に関する情報は https://www.kernel.org/doc/man-pages/ に書かれている。

関連キーワード

pthread   cleanup   ハンドラ   mutex   取り消し   アップ   スレッド   ロック   登録   push   oldtype   時点   非同期   setcanceltype   unlock   defer   restore   方法   ブロック   最後   マクロ   遅延   deferred   lock   コード

Linux マニュアル 一覧

関連するコマンド・関数

pthread_cleanup_push_defer_np.3   pthread_cleanup_push.3   pthread_cleanup_pop.3   pthread_exit.3   pthread_testcancel.3   pthread_setcancelstate.3
 

Index

名前
書式
説明
準拠
関連項目
この文書について

This document was created by man2html, using the manual pages.
Time: 04:39:07 GMT, October 11, 2026