pthread create引數傳遞

2021-08-28 12:29:02 字數 1936 閱讀 8469

說明:本文**多執行緒程式設計之pthread_create函式應用,在此基礎上筆者做了些許改動。

pthread_create函式

函式簡介

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 #include4 

5 /* 宣告結構體 */

6 struct member

7 ;

11 12 /* 定義執行緒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);

51

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

53 printf("mian continue!\n");

54

55 /* 等待執行緒pthread釋放 */

56 if (pthread_join(tidp, null))

57

61

62 return 0;

63 }

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

pthread create 引數傳遞指標問題

pthread create 引數傳遞指標問題 2010 11 04 15 52 linux 下常用的建立多執行緒函式pthread create pthread t thread pthread attr t attr void start routine void void args 其中第乙個...

pthread create 引數傳遞指標問題

linux 下常用的建立多執行緒函式pthread create pthread t thread pthread attr t attr void start routine void void args 其中第乙個引數用來儲存執行緒資訊,第二個引數指新執行緒的執行屬性,可以設定為null,第三個...

pthread create 函式用法

天開始學習linux下用c開發多執行緒程式,linux系統下的多執行緒遵循posix執行緒介面,稱為pthread。include int pthread create pthread t restrict tidp,const pthread attr t restrict attr,void s...