我在C語言中創建了一個執行緒,以便在運行期間從一個網頁上檢查一些東西。我是否應該關閉這個執行緒,或者一旦它執行完畢,它是否會被自動處理掉?
--> Imports
#include <stdbool.h>/span>
#include <stdlib.h>
#include <stdio.h>
#include <unistd.h>
#include <pthread.h>/span>
--> 啟動執行緒
pthread_t thread_id。
pthread_create(&thread_id, NULL, threadFunction, NULL)。
--> 執行緒函式
void *threadFunction(void *vargp) {
//Do something...
return NULL。
}
uj5u.com熱心網友回復:
你不需要考慮使用pthread_cancel,除非目標是過早地結束一個正在運行的執行緒的執行。
在大多數情況下,你只是想讓執行緒完成其作業。你通常通過使用pthread_join來檢測一個執行緒是否已經完成。
如果你正在創建一個預計不會結束的執行緒,或者它何時結束并不重要,你可以創建一個分離的執行緒,或者在創建后使用pthread_detach將其分離。然后,這個執行緒就不能被加入了。
你的示例代碼中傳遞了一些資訊。
你的示例代碼為執行緒屬性傳遞了NULL,這導致pthread_create使用默認屬性。你應該檢查你的系統,但Linux默認會創建可連接的執行緒。
對于大多數初級專案來說,創建可連接的執行緒可能是最簡單的,并讓主執行緒在生成所有執行緒后呼叫pthread_exit。這將在程式終止之前等待每個被催生的執行緒執行完畢。
否則,如果主執行緒在執行緒完成后有需要執行的總結性作業,它將用pthread_join等待每個執行緒,直到所有執行緒都回傳。在最后一個執行緒回傳后,主執行緒可以做它需要做的事情,然后退出。
uj5u.com熱心網友回復:
pthread的檔案是這樣說的:
執行緒被創建,執行start_routine,arg是它唯一的引數。如果start_routine回傳,其效果就像有一個隱式呼叫pthread_exit(),使用start_routine的回傳值作為退出狀態。注意,最初呼叫main()的執行緒與此不同。當它從main()回傳時,其效果就像有一個隱式呼叫exit(),使用main()的回傳值作為退出狀態。因此不需要明確地終止執行緒。
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/322460.html
標籤:
