クリーンアップハンドラは、割り当てられたリソースのクリーンアップや不変式の復元など、諸条件を起点のものと矛盾しない状態に復元するためのものです。クリーンアップハンドラの管理には、pthread_cleanup_push(3T) 関数と pthread_cleanup_pop(3T) 関数を使用します。
クリーンアップハンドラは、プログラムの同じ字句解析上の範囲でプッシュされてポップされます。プッシュとポップは、常に対になっていなければなりません。そうでないと、コンパイルエラーになります。
pthread_cleanup_push(3T) は、クリーンアップハンドラをクリーンアップスタック (LIFO) にプッシュします。
プロトタイプ: void pthread_cleanup_push(void(*routine)(void *), void *args); #include <pthread.h> /* ハンドラ「routine」をクリーンアップスタックにプッシュする */ pthread_cleanup_push (routine, arg); |