マルチスレッドのプログラミング

スタックへハンドラをプッシュする

クリーンアップハンドラは、諸条件を起点のものと矛盾しない状態に復元するために使用します。矛盾しない状態には、割り当てられたリソースのクリーンアップや不変式の復元などが含まれます。ハンドラの管理には、pthread_cleanup_push(3C) 関数と pthread_cleanup_pop(3C) 関数を使用します。

クリーンアップハンドラは、プログラムの同じ字句解析上の範囲でプッシュされてポップされます。プッシュとポップは、常に対になっていなければなりません。そうでないと、コンパイルエラーになります。

pthread_cleanup_push の構文

クリーンアップハンドラをクリーンアップスタック (LIFO) にプッシュするには、pthread_cleanup_push(3C) を使用します。

void pthread_cleanup_push(void(*routine)(void *), void *args);
#include <pthread.h>

/* push the handler "routine" on cleanup stack */
pthread_cleanup_push (routine, arg); 

pthread_cleanup_push の戻り値

pthread_cleanup_push() は値を返しません。