パスワードを忘れた? アカウント作成

Silphire (7255) の日記

2003 年 01 月 07 日
午後 11:50

pthread日記(4) - pthread_cleanup_push()

スレッドが終了する時に呼び出されるcancellation handlerを登録します。

void pthread_cleanup_push(void (*routine)(void*), void *arg);

cancellation handler

cancellation handlerとは、C++のdestructorや、Cのatexit()のように、スレッドが終了する時に実行されるプログラムです。具体的には、以下のような時に呼び出されます。

  1. スレッドが終了した時。
  2. スレッドに対して、外部からスレッドが強制的に終了させられた時。(pthread_cancel()による)
  3. スレッド自身が、pthread_cleanup_pop()を引数に非0を与えて呼び出した時。

pthread_cleanup_push()の最初の引数routineは、cancellation handlerの関数へのポインタで、pthread_cleanup_push()の引数から分かる通り

void *routine(void *arg);

というような形をしています。

2つ目の引数argは、上述のroutineに与える引数です。

この議論は賞味期限が切れたので、アーカイブ化されています。 新たにコメントを付けることはできません。

吾輩はリファレンスである。名前はまだ無い -- perlの中の人

処理中...