1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 |
#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*)1); pthread_create(&t2,NULL,func2,(void*)1); pthread_join(t1,NULL); pthread_join(t2,NULL); printf("t1 t2 finished\n"); } |
11111111
最新推荐文章于 2023-12-18 15:40:07 发布