当可以使用return时为什么使用pthread_exit()?

Ste*_*ric 2 c unix

在以下程序中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)

axi*_*iac 6

pthread_exit()用于线程什么exit()是用于主程序。

您可以始终使用终止主程序return吗?我猜不会。这就是为什么exit()并且pthread_exit()存在。

从线程的主函数返回执行对的隐式调用pthread_exit()。无论您如何终止线程,都将调用该函数。它负责线程的清理。

但是,如果函数foo()调用函数bar()bar()确定它必须终止线程,则调用pthread_exit()比从中返回bar()并检查中的返回值要方便得多foo()return随着链中呼叫数量的增加,烦恼也随之增加。