我对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_join
, pthread_t
值将保持有效并消耗资源 – 至少需要资源来存储返回值并占用pthread_t
一个可能值。 如果你正在使用pthread_detach
,一般你在创建新线程(在pthread_create
之后)立即从新线程或创建线程调用它。