我是pthreads的新手,我想知道确切的差异是什么。
pthread_exit退出一个帖子。因此pthread_join将返回;但是,分离与pthread_join有何不同?
例如,我创建了一个线程,让我们说线程已经完成,我想完全终止线程,以便稍后重新创建它。什么是更好的使用。 pthread_join还是pthread_detach?所以执行顺序是
pthread_exit();
pthread_join(); or pthread_detach();
答案 0 :(得分:21)
pthread_exit
以提前终止其执行(并返回结果)。
pthread_join
来等待线程终止并获取其返回值。它可以在您等待呼叫pthread_exit
的线程之前或之后调用。如果之前,它将等待退出发生。如果之后,它只是获取返回值并释放pthread_t
资源。
pthread_detach
,并指示您不希望线程的返回值或等待它完成的能力。这很有用,因为否则,在您调用pthread_join
之前,pthread_t
值仍然有效并消耗资源 - 至少是用于存储返回值并占用{{1}的一个可能值的资源。 }。如果您正在使用pthread_t
,通常在创建新线程后立即从新线程或创建线程调用它(在pthread_detach
之后)。