Linux多线程实例练习 - pthread_exit 与 pthread_join
pthread_exit():终止当前线程
void pthread_exit(void* retval);
pthread_join():阻塞当前的线程,直到另外一个线程运行结束
int pthread_join(pthread_t thread, void **retval);
1、代码 xx_pthread_exit.c
1 #include <pthread.h> 2 #include <stdio.h> 3 #include <unistd.h> 4 5 #define debug_Msg(fmt, arg...) 6 do{ 7 printf("%s %d : ", __FILE__, __LINE__); 8 printf(fmt, ##arg); 9 }while(0) 10 11 void * doPrint(void *arg) 12 { 13 debug_Msg("%s ", (char*)arg); 14 char * p = "thread is over"; 15 pthread_exit(p); 16 } 17 int main() 18 { 19 pthread_t pid; 20 char * pt = "hello pthread"; 21 pthread_create(&pid, NULL, doPrint, pt); 22 void * p = NULL; 23 pthread_join(pid, &p); 24 debug_Msg("return of thread : [%s] ", (char*)p); 25 26 return 0; 27 }
2、CentOS 下编译通过
g++ -g -c -o xx_pthread_exit.o xx_pthread_exit.c
g++ -g -o xx_pthread_exit xx_pthread_exit.o -lpthread
3、运行结果
$ ./xx_pthread_exit xx_pthread_exit.c 13 : hello pthread xx_pthread_exit.c 24 : return of thread : [thread is over]