後端開發核心技術 第9章多執行緒 多執行緒的建立與結束

2021-10-06 14:04:06 字數 3200 閱讀 3906

#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用來等待乙個執行緒的結束。

函式原型為:

int pthread_join (pthread_t thread,

void

** retval)

;

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

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

注意

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

函式介紹

函式使執行緒退出,並返回乙個空指標型別的值。

乙個執行緒的結束有兩種途徑:

①函式已經結束,呼叫它的執行緒也就結束了

②通過函式pthread_exit來實現

原型

void

pthread_exit

(void

*retval)

引數唯一的引數是函式的返回**

pthread_exit(void *ptr) 函式使執行緒退出,並返回乙個空指標型別的值。

pthread_join(pthread_t tid,void **rtval)呼叫此函式的程序/執行緒等id為tid的執行緒返回或被終止,並從它那裡獲得返回值。

//呼叫pthread_jion函式,獲得執行緒的飯hi之。

void

*retval;

iret=

pthread_join

(tid,

&retval);if

(iret)

printf

("retval=%ld\n",(

long

)retval)

;return0;

}編譯 g++ -lpthread -o test test.cpp,這裡需要連線靜態庫檔案pthread。執行./test命令可以得到

用hello::say_hello傳入呼叫函式

#include

#include

class

hello};

intmain()

void

*retval;

iret=

pthread_join

(tid,

&retval);if

(iret)

printf

("retval=%ld\n",(

long

)retval)

;return0;

}

#include

#include

void

*say_hello

(void

* args)

intmain()

void

*retval;

iret=

pthread_join

(tid,

&retval);if

(iret)

printf

("retval=%ld\n",(

long

)retval)

;return0;

}

傳入時直接引用結構體位址即可

#include

#include

#include

struct arg_type

;void

*say_hello

(void

* args)

intmain()

void

*retval;

iret=

pthread_join

(tid,

&retval);if

(iret)

printf

("retval=%ld\n",(

long

)retval)

;return0;

}

//第一種

void

*function

(void

*arg)

//第二種

intmain()

printf

("pthread id in process = %lu\n"

,thread)

;}

後端開發核心技術 第5章除錯 strace

所有作業系統在其核心都有一些內建的函式,這些函式可以用來完成一些系統級別的功能,這些函式被稱為系統呼叫,這些函式代表了使用者空間到核心空間的一種轉換 例如使用者空間呼叫open函式,在核心空間中則會呼叫sys open。系統呼叫並不直接返回錯誤碼,而是將錯誤碼放入到乙個名為errno的全域性變數中。...

多執行緒核心技術 多執行緒技能

1 建立執行緒的方法 繼承thread,實現runnable 注意 例項變數與執行緒安全 2 具體方法 isalive 判斷執行緒狀態,進入準備生命週期的執行緒返回true sleep 睡眠,需要跑出interrupt異常以便執行緒打斷丟擲 如果在sleep的執行緒被打斷,sleep會被設定為fal...

後端開發核心技術 第7章網路IO模型 poll

include intpoll struct pollfd fds,unsigned int nfds,int timeout 1 fds 指向乙個結構體陣列的第0個元素的指標,每個陣列元素都是乙個struct pollfd結構,用於指定測試某個給定的fd的條件 2 nfds 表示fds結構體陣列的...