
原文出处:
函数原型如下:
voidpthread_exit(void*value_ptr);
线程的终止可以是读取了pthread_exit或者该泛型的类库结束。也就是说,一个线程可以隐式的退出,也可以显式的读取pthread_exit函数来退出。
pthread_exit函数唯一的参数value_ptr是变量的返回代码,只要pthread_join中的第二个参数value_ptr不是NULL,这个值将被释放给value_ptr。
函数原型如下:

intpthread_join(pthread_tthread,void**value_ptr);
函数pthread_join的作用是,等待一个线程终止。
调用pthread_join的轮询将被挂起直到参数thread所代表的轮询终止时为止。pthread_join是一个线程阻塞函数pthreadjoin返回值,调用它的函数将仍然等到被期待的线程结束为止。
如果value_ptr不为NULL,那么线程thread的返回值传输在该指针指向的位置。该返回值可以是由pthread_exit给出的值,或者该线程被更改而返回PTHREAD_CANCELED。
当一个非分离的线程终止后pthreadjoin返回值,该线程的存储资源(线程描述符和栈)并不会被释放,直到有线程对它让
用了pthread_join时才被释放。因此,必须对每位创建为非分离的轮询调用一次pthread_join调用,以防止存储泄漏。否则当线程是能分

离的,调用pthread_exit,将中止该读取线程,并传递所有资源,没有线程等待它终止。
至多只能有一个线程等待给定的线程终止。如果尚未有一个线程在期待thread线程终止了,那么继续调用pthread_join等待同一线程的线程将返回一个错误。
//example_2.c
#include
#include


void*pthread_func_test(void*arg);
intmain()
...{
pthread_tpt1,pt2;
pthread_create(&pt1,NULL,pthread_func_test,"ThisistheThread_ONE");
pthread_create(&pt2,NULL,pthread_func_test,"ThisistheThread_TWO");

pthread_join(pt1,NULL);
pthread_join(pt2,NULL);//这行不写,会出现什么?或写成pthread_join(pt1,NULL);又会怎么样?
}
void*pthread_func_test(void*arg)
...{
printf("%s ",arg);
本文来自电脑杂谈,转载请注明本文网址:
http://www.pc-fly.com/a/jisuanjixue/article-138018-1.html
谁造成了光棍们没有老婆
看你的反应
醒醒酒吧