在以下程序中return p,输出与相同pthread_exit(p)。那为什么要用pthread_exit()呢?
void *foo(void *p){
*((int *)p) += 1;
pthread_exit(p);
}
int main()
{
pthread_t t;
int i=9;
int *j;
pthread_create(&t,NULL, foo, &i);
pthread_join(t,(void**)&j);
printf("%d\n",*j);
}
Run Code Online (Sandbox Code Playgroud)
pthread_exit()用于线程什么exit()是用于主程序。
您可以始终使用终止主程序return吗?我猜不会。这就是为什么exit()并且pthread_exit()存在。
从线程的主函数返回执行对的隐式调用pthread_exit()。无论您如何终止线程,都将调用该函数。它负责线程的清理。
但是,如果函数foo()调用函数bar()并bar()确定它必须终止线程,则调用pthread_exit()比从中返回bar()并检查中的返回值要方便得多foo()。return随着链中呼叫数量的增加,烦恼也随之增加。