pthread_cleanup_push和pthread_cleanup_pop是一对的。push中第一个参数是函数,第二个参数是函数的参数,pop为0表示弹出时不执行,否则再执行到pop时会执行push中指定的函数。在他们之间的程序段如果退出则执行push中指定的函数。
代码如下:
#include<stdio.h>
#include<pthread.h>
void display()
{
printf("Hello lcrystal!/n");
}
void fun()
{
pthread_cleanup_push((void *)display,NULL);
pthread_exit(0);
pthread_cleanup_pop(0);
}
int main()
{
pthread_t id;
pthread_create(&id,NULL,(void *)fun,NULL);
pthread_join(id,NULL);
return 0;
}