pthread_exit,pthread_join和pthread_detach之间的区别

我对pthreads是完全陌生的,我不知道确切的区别是什么。

pthread_exit退出一个线程。 并因此pthread_join将返回; 但是,detach与pthread_join有什么不同呢?

比如我创build了一个线程,让线程完成,我想完全终止线程,以便稍后重新创build。 有什么更好的使用。 pthread_join或pthread_detach?

所以执行的顺序是

pthread_exit(); pthread_join(); or pthread_detach(); 

从线程本身调用pthread_exit来尽早终止它的执行(并返回一个结果)。

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

可以从线程本身或其他线程中调用pthread_detach ,并指出您不希望线程的返回值或等待它完成的能力。 这很有用,因为否则,在调用pthread_joinpthread_t值将保持有效并消耗资源 – 至少需要资源来存储返回值并占用pthread_t一个可能值。 如果你正在使用pthread_detach ,一般你在创建新线程(在pthread_create之后)立即从新线程或创建线程调用它。