クリーンアップスタックからクリーンアップハンドラを取り出すには、pthread_cleanup_pop(3C) を使用します。
void pthread_cleanup_pop(int execute);
#include <pthread.h> /* pop the "func" out of cleanup stack and execute "func" */ pthread_cleanup_pop (1); /* pop the "func" and DONT execute "func" */ pthread_cleanup_pop (0);
この関数への引数が 0 以外なら、指定のハンドラがスタックから取り除かれて実行されます。引数が 0 の場合は、ハンドラはポップされるだけで実行されません。
0 以外の引数を指定して pthread_cleanup_pop() を有効に呼び出せるのは、スレッドが pthread_exit() を明示的または暗黙的に呼び出した場合か、取り消し要求を受け付けた場合です。
pthread_cleanup_pop() は値を返しません。