Linux多執行緒

2021-07-24 06:12:35 字數 1761 閱讀 7061

一、執行緒的特點

1. 執行緒是程序的乙個執行流,是cpu排程和分配的基本單位。執行緒是程式執行的最小單位。

2. 執行緒不會影響到其它執行緒的執行。比如乙個執行緒崩潰,其它執行緒正常執行。

3. 同一程序內的執行緒共享程序的位址空間。

二、乙個執行緒的組成

1. 乙個指向當前被執行指令的指令指標

2. 乙個棧空間

3. 乙個暫存器值的集合

4. 乙個私有的資料區

三、使用執行緒的優點

1. 同一程序下的多執行緒共享位址空間,減少的資源的浪費。

2. 執行緒間方便的通訊機制。因為執行緒共享資料空間,所以通訊十分方便。

3. 作業系統會保證當執行緒數不大於cpu數目時,不同的執行緒執行於不同的cpu上。

4. 改善程式結構。可以任務拆分成多個小任務,方便管理。

四、posix執行緒介面函式

1.pthread_create

函式作用:建立執行緒

函式原型:int pthread_create(pthread_t *restrict thread, const pthread_attr_t *restrict attr, void *(*start_routine)(void*), void *restrict arg);

函式引數:thread  --執行緒識別符號。

attr  --執行緒的屬性,一般為null。

start_routine  --執行緒的執行函式,沒有為null。

arg  --傳入到執行緒執行函式的引數。

標頭檔案:#include

返回值:成功返回0,出錯為非0。

2.  pthread_exit

函式作用:執行緒的退出

函式原型:void pthread_exit(void *value_ptr);

函式引數:value_ptr  --執行緒結束的返回值。

標頭檔案:#include

注意:執行緒的退出只能由自己呼叫。

3. pthread_join

函式作用:等待執行緒 

函式原型:int pthread_join(pthread_t thread, void **value_ptr);

函式引數:thread  --執行緒的識別符號。

value_ptr  --不為null,儲存執行緒結束的返回值。

標頭檔案:#include

返回值:成功返回0,出錯返回非0。

五、參考**

[objc]view plain

copy

#include 

#include 

void

void

*mythread1(

void

)    

}  void

void

*mythread2(

void

)    

}  int

main()  

/*建立執行緒2*/

ret = pthread_create(&id2

, null

, (void

*)mythread2, 

null

);  

if(ret)  

pthread_join(id1

, null

);  

pthread_join(id2

, null

);  

return

0;  

}  

linux多執行緒

linux下為了多執行緒同步,通常用到鎖的概念。posix下抽象了乙個鎖型別的結構 ptread mutex t。通過對該結構的操作,來判斷資源是否可以訪問。顧名思義,加鎖 lock 後,別人就無法開啟,只有當鎖沒有關閉 unlock 的時候才能訪問資源。它主要用如下5個函式進行操作。1 pthre...

linux多執行緒

執行緒標識 就像每個程序都有乙個id一樣,執行緒也有自己的id。程序id用pid t來表示,他是乙個unsigned int。程序id用pthread t來表示,pthread t不能把它當整數處理。程序可以通過pthread self 函式獲得自身的執行緒id。執行緒建立 在程序中只有乙個控制線程...

linux多執行緒

原型 int pthread create pthread t thread,const pthread attr t attr,功能 建立新的執行緒,成功返回0,失敗返回錯誤編號 引數 thread 用來儲存新建立的執行緒id attr 乙個指向pthread attr t結構的指標,指向的結構決...