一、執行緒的特點
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結構的指標,指向的結構決...