原型:void pthread_exit(void *retval)
用法:#include <pthread.h>
功能:使用函数pthread_exit退出线程,这是线程的主动行为;由于一个进程中的多个线程是共享数据段的,因此通常在线程退出之后,退出线程所占用的资源并不会随着线程的终止而得到释放,但是可以用pthread_join()函数(下篇博客中讲到)来同步并释放资源。
说明:retval:pthread_exit()调用线程的返回值,可由其他函数如pthread_join来检索获取。
举例:
#include <stdlib.h> #include <string.h> #include <stdio.h> #include <pthread.h> #include <unistd.h> void * thread_1(void * arg) { int i = 0; for(i=0; i<7; i++) { printf("This is a thread_1 "); if(i == 2) pthread_exit(0); sleep(1); } } void * thread_2(void * arg) { int i; for(i=0; i<3; i++) { printf("This is a thread_2 "); } pthread_exit(0); } int main() { pthread_t id_1; pthread_t id_2; int i, ret; // Create thread 1 ret = pthread_create(&id_1, NULL, &thread_1, NULL); if(ret != 0) { printf("thread create error. "); return -1; } // Create thread 2 ret = pthread_create(&id_2, NULL, &thread_2, NULL); if(ret != 0) { printf("thread2 create error. "); return -1; } pthread_join(id_1, NULL); pthread_join(id_2, NULL); return 0; }