簡體   English   中英

pthread_exit,pthread_join和pthread_detach之間的區別

[英]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_joinpthread_t值仍然有效並消耗資源 - 至少是用於存儲返回值並占用pthread_t一個可能值的資源。 如果您正在使用pthread_detach ,通常在創建新線程后立即從新線程或創建線程調用它(在pthread_create之后)。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM