[英]Difference between pthread_exit, pthread_join and pthread_detach
我是pthreads的新手,我想知道確切的差異是什么。
pthread_exit退出一個線程。 因此pthread_join將返回; 但是,分離的作用與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
值仍然有效並消耗資源 - 至少是用於存儲返回值並占用pthread_t
一個可能值的資源。 如果您正在使用pthread_detach
,通常在創建新線程后立即從新線程或創建線程調用它(在pthread_create
之后)。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.