我是 pthreads 的新手,我想知道确切的区别是什么。
pthread_exit 退出一个线程。因此 pthread_join 将返回;然而,detach 与 pthread_join 有什么不同呢?
例如,我创建了一个线程,假设该线程已完成,我想完全终止该线程,以便稍后重新创建它。用什么比较好。 pthread_join 还是 pthread_detach?
所以执行顺序是
pthread_exit();
pthread_join(); or pthread_detach();
?
最佳答案
pthread_exit
从线程本身调用以提前终止其执行(并返回结果)。
pthread_join
从另一个线程(通常是创建它的线程)调用以等待线程终止并获取其返回值。它可以在您等待调用的线程之前或之后调用 pthread_exit
.如果之前,它将等待退出发生。如果之后,它只是获取返回值并释放pthread_t
资源。
pthread_detach
可以从线程本身或另一个线程调用,并表明您不希望线程的返回值或等待它完成的能力。这很有用,因为否则,直到您调用 pthread_join
, pthread_t
value 保持有效并消耗资源——至少,资源用于存储返回值并占用 pthread_t
的一个可能值。 .如果您使用 pthread_detach
,通常您会在新线程创建后立即从新线程或正在创建的线程调用它(紧接在 pthread_create
之后)。
关于c - pthread_exit、pthread_join 和 pthread_detach 之间的区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22427007/