#include<stdio.h>
#include<pthread.h>
#include<stdlib.h>
#include<string.h>
#include<unistd.h>
#include<sys/types.h>
void *fisrt_clean(){
printf(" fisrt clean\n");
return (void *) 0;
}
void *senced_clean(){
printf(" senced clean\n");
return (void *) 0;
}
void *thread_fun1(){
printf("new thread 1\n");
pthread_cleanup_push(fisrt_clean,"thread1");
pthread_cleanup_push(senced_clean,"thread1");
pthread_cleanup_pop(1);
pthread_cleanup_pop(0);
return (void *)0;
}
void *thread_fun2(){
printf("new thread 2\n");
pthread_cleanup_push(fisrt_clean,"thread2");
pthread_cleanup_push(senced_clean,"thread2");
pthread_cleanup_pop(0);
pthread_cleanup_pop(0);
pthread_exit((void *)2);
}
int main(){
pthread_t tid1 ,tid2;
int err;
err=pthread_create(&tid1 ,NULL,thread_fun1,NULL);
if(err!=0){
printf("cxcw\n");
return 0;
}
err=pthread_create(&tid2 ,NULL,thread_fun2,NULL);
if(err!=0){
printf("cxcw\n");
return 0;
}
sleep(2);
return 0;
}
04-17
2064