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
).