Linux 執行緒控制

2021-10-05 09:22:33 字數 1560 閱讀 1993

話不多說,直接進入正題!!!?

1. 什麼是執行緒?

2. 執行緒控制

2.1 執行緒建立

int pthread_create(pthread_t *tid, pthread_attr_t *attr, void *(*start_routine)

(void*), void *arg)

; tid:返回執行緒id

attr:設定執行緒的屬性,attr為null表示使用預設屬性 ,平常置空

start_routine:是個函式位址,執行緒啟動後要執行的函式

arg:傳給執行緒啟動函式的引數

返回值:成功返回0;失敗返回錯誤碼。

2.2 執行緒等待

【為什麼要執行緒等待】

int pthread_join(pthread_t thread, void **value_ptr)

; 引數

thread:執行緒id

value_ptr:它指向乙個指標,後者指向執行緒的返回值

返回值:成功返回0;失敗返回錯誤碼

2.3 執行緒分離
int pthread_detach(pthread_t, tid)

; //執行緒組內其他執行緒對目標執行緒進行分離

pthread_detach_self(void)

; //執行緒自己分離

注意:joinable和分離是衝突的,乙個執行緒不能既是joinable又是分離的

2.4 執行緒退出

return

執行緒將自己的入口函式執行完畢return退出。
pthread_exit函式

void pthread_exit(void *value_ptr)

; //退出呼叫執行緒

pthread_cancel函式

int pthread_cancel(pthread_t thread)

; //取消乙個執行中的執行緒

3. 例子
#include 

#include

#include

#include

void *thr_start(void *arg) //執行緒入口函式

return null;

}int main(

) //pthread_detach(tid)

; //執行緒分離

char *retval; //想獲取乙個一級指標的值,對一級指標取位址傳入它的二級指標

pthread_join(tid, (void**)

&retval)

; //執行緒等待

printf(

"retval:%s\n", retval)

; //sleep(5)

; //pthread_cancel(tid)

; //執行緒終止:取消乙個執行中的執行緒

while(1)

return 0; //執行緒終止:return

}

linux執行緒控制

1.執行緒屬性 a 分離狀態 不需要了解執行緒返回終止狀態時設定 b 棧末尾警戒緩衝區 避免棧溢位的擴充套件記憶體大小,一般系統設定為頁的整數倍 c 棧的最小位址 i.當有許多執行緒時,減少棧大小 ii.當執行緒中有許多自動變數時,則增大棧大小 d 棧的最小長度 2.互斥量屬性 a 程序共享屬性 i...

《Linux》 執行緒控制

posix執行緒庫 與執行緒有關的函式構成了乙個完整的系列,絕大多數函式的名字都是以 pthread 打頭的 要使用這些函式庫,要通過引入頭文 鏈結這些執行緒函式庫時要使用編譯器命令 lpthread 選項 建立執行緒 功能 建立乙個新的執行緒 原型 int pthread create pthre...

linux多執行緒控制

include include include include include define size 1024 函式作用 使用訊號量控制,讀取輸入,獲得長度 void thread function void argv char buf size sem t sem int main res pt...