#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <pthread.h>
void * func0(void* arg)
{
char *s=(char*)arg;
printf("clean_fun1:%s\r\n",s);
}
void * func00(void* arg)
{
int p=(int)arg;
printf("clean_fun2:%d\n",p);
}
void *func1(void* arg)
{
int excute=(int)arg;
pthread_cleanup_push(&func0,"clean function1");
printf("clean function1 running\n");
//pthread_exit((void*)0);
pthread_cleanup_pop(excute);
return (void*)0;
}
void *func2(void* arg)
{
int excute=(int)arg;
pthread_cleanup_push(&func00,(void*)4396);
printf("clean function2 running\n");
//pthread_exit((void*)0);
pthread_cleanup_pop(excute);
return (void*)0;
}
int main()
{
pthread_t t1,t2;
pthread_create(&t1,NULL,func1,(void*)0);
pthread_create(&t2,NULL,func2,(void*)0);
pthread_join(t1,NULL);
pthread_join(t2,NULL);