pthread_exit,pthread_join和pthread_detach之间的区别

use*_*085 11 c linux multithreading pthreads

我是pthreads的新手,我想知道确切的差异是什么.

pthread_exit退出一个线程.因此pthread_join将返回; 但是,分离的作用与pthread_join有什么不同?

例如,我创建一个线程,并说让线程完成,我想完全终止线程,以便我以后可以重新创建它.什么是更好的使用.pthread_join还是pthread_detach?

所以执行的顺序是

pthread_exit();
pthread_join(); or pthread_detach();
Run Code Online (Sandbox Code Playgroud)

R..*_*R.. 24

pthread_exit 从线程本身调用以提前终止其执行(并返回结果).

pthread_join从另一个线程(通常是创建它的线程)调用,以等待线程终止并获取其返回值.它可以在您等待呼叫的线程之前或之后调用pthread_exit.如果之前,它将等待退出发生.如果之后,它只是获取返回值并释放pthread_t资源.

pthread_detach可以从线程本身或另一个线程调用,并指示您不希望线程的返回值或等待它完成的能力.这很有用,因为否则,在您调用之前pthread_join,该pthread_t值仍然有效并消耗资源 - 至少是用于存储返回值并占用一个可能值的资源pthread_t.如果您正在使用pthread_detach,通常在创建新线程后立即从新线程或创建线程调用它(紧接着pthread_create).