linux建立執行緒之pthread create

2021-08-18 09:52:37 字數 1557 閱讀 8999

函式簡介

pthread_create是unix環境建立執行緒函式

標頭檔案#include

函式宣告

int pthread_create(pthread_t *restrict tidp,const pthread_attr_t *restrict_attr,void*(*start_rtn)(void*),void *restrict arg);

返回值若成功則返回0,否則返回出錯編號

引數第乙個引數為指向執行緒識別符號的指標。

第二個引數用來設定執行緒屬性。

第三個引數是執行緒執行函式的位址。

最後乙個引數是執行函式的引數。

注意在編譯時注意加上-lpthread引數,以呼叫靜態鏈結庫。因為pthread並非linux系統的預設庫。 

pthread_join函式

函式簡介

函式pthread_join用來等待乙個執行緒的結束。

函式原型為:

extern int pthread_join __p (pthread_t __th, void **__thread_return);

引數:第乙個引數為被等待的執行緒識別符號

第二個引數為乙個使用者定義的指標,它可以用來儲存被等待執行緒的返回值。

注意這個函式是乙個執行緒阻塞的函式,呼叫它的函式將一直等待到被等待的執行緒結束為止,當函式返回時,被等待執行緒的資源被收回。如果執行成功,將返回0,如果失敗則返回乙個錯誤號。

例子:

1 #include2 #include3 #include45/*

宣告結構體 */6

struct member

7 ;

1112

/*定義執行緒pthread

*/13

static

void * pthread(void *arg)

14 30

31/*

main函式

*/32

int main(int agrc,char* argv)

33 48

49/*

令執行緒pthread先執行

*/50 sleep(1);

5152

/*執行緒pthread睡眠2s,此時main可以先執行

*/53 printf("

mian continue!\n

");54

55/*

等待執行緒pthread釋放

*/56

if (pthread_join(tidp, null))

57

6162

return

0;63 }

編譯與執行結果

編譯與執行結果如下圖所示,可以看到主線程main和執行緒pthread交替執行。也就是說是當我們建立了執行緒pthread之後,兩個執行緒都在執行,證明建立成功。另外,可以看到建立執行緒pthread時候,傳入的引數被正確列印。

Linux多執行緒之執行緒建立

1.函式 include intpthread create pthread t restrict thread,const pthread attr t restrict attr,void start routine void void restrict arg 引數 thread 為執行緒id...

管理執行緒之建立執行緒

基本的執行緒管理包括 1 建立執行緒。2 等待它結束或在後台執行。3 向執行緒函式傳遞引數,更改執行緒物件所有權。4 選擇執行緒和使用特定執行緒。void do some work std thread my thread do some work 這是最簡單的情況,std thread還可以使用可...

執行緒之執行緒的建立

在傳統的unix程序模型中,每個程序只有乙個控制線程。從概念上講,這與基於執行緒的模型中只包含乙個執行緒是相同的。在posix執行緒 pthread 的情況下,程式開始執行時,它也是以單程序中的單個控制線程啟動的,在建立多個控制線程以前,程式的行為與傳統的程序並沒有什麼區別。新增的執行緒可以通過呼叫...