Linux 執行緒操作函式總結

2021-07-04 16:39:16 字數 2524 閱讀 9925

1、執行緒建立函式int pthread_create(pthread_t *restrict tidp, const pthread_attr_t *restrict attr, void *(*start_rtn)(void), void *restrict arg);

返回值:若是成功建立執行緒返回0,否則返回錯誤的編號

形 參:

tidp 要建立的執行緒的執行緒id指標

attr 建立執行緒時的執行緒屬性

start_rtn 返回值是void型別的指標函式

arg start_rtn的形參

說 明:建立乙個具有指定引數的執行緒。

標頭檔案:#include 2、等待執行緒結束函式int pthread_join(pthread_t thread, void **retval);

返回值:若是成功建立執行緒返回0,否則返回錯誤的編號

形 參:

thread 被等待的執行緒識別符號

retval 乙個使用者定義的指標,它可以用來儲存被等待執行緒的返回值

說 明:這個函式是乙個執行緒阻塞的函式,呼叫它的函式將一直等待到被等待的執行緒結束為止,當函式返回時,被等待執行緒的資源被收回

標頭檔案:#include 3、執行緒終止函式void pthread_exit(void* retval);

返回值:無

形 參:

retval 函式的返回指標,只要pthread_join中的第二個引數retval不是null,這個值將被傳遞給retval

說 明:終止呼叫它的執行緒並返回乙個指向某個物件的指標。

標頭檔案:#include 4、執行緒取消函式int pthread_cancel(pthread_t thread);

返回值:若是成功返回0,否則返回錯誤的編號

形 參:

thread 要取消執行緒的識別符號id

說 明:取消某個執行緒的執行。

執行緒取消的方法是向目標執行緒發cancel訊號,但如何處理cancel訊號則由目標執行緒自己決定,或者忽略、或者立即終止、或者繼續執行至cancelation-point(取消點:會引起阻塞的系 統呼叫),由不同的cancelation狀態決定。執行緒接收到cancel訊號的預設處理(即pthread_create()建立執行緒的預設狀態)是繼續執行至取消點才會退出。

根 據posix標準,pthread_join()、pthread_testcancel()、pthread_cond_wait()、 pthread_cond_timedwait()、sem_wait()、sigwait()等函式以及read()、write()等會引起阻塞的系 統呼叫都是cancelation-point,而其他pthread函式都不會引起cancelation動作。但是pthread_cancel的手 冊頁聲稱,由於linuxthread庫與c庫結合得不好,因而目前c庫函式都不是cancelation-point;但cancel訊號會使執行緒從阻 塞的系統呼叫中退出,並置eintr錯誤碼,因此可以在需要作為cancelation-point的系統呼叫前後呼叫 pthread_testcancel(),從而達到posix標準所要求的目標,即如下**段:

retcode = read(fd, buffer, length);

pthread_testcancel();

標頭檔案:#include 5、獲取當前執行緒標識idpthread_t pthread_self(void);

返回值:當前執行緒的執行緒id標識

形 參:無

說 明:獲取當前呼叫執行緒的 thread identifier(標識號)

標頭檔案:#include 6、分離釋放執行緒int pthread_detach(pthread_t thread);

返回值:若是成功返回0,否則返回錯誤的編號

形 參:

thread 要釋放執行緒的識別符號id

說 明:linux執行緒執行和windows不同,pthread有兩種狀態joinable狀態和unjoinable狀態。

標頭檔案:#include 7、比較兩個執行緒是否是同乙個執行緒int pthread_equal(pthread_t thread1, pthread_t thread2);

返回值:若是返回0 不相等,非零相等

形 參:

thread1 要比較的執行緒的識別符號id

thread2 要比較的執行緒的識別符號id

說 明:判斷兩個執行緒id是否相等。

標頭檔案:#include

pthread_t的型別為unsigned long int,所以在列印的時候要使用%lu方式,否則將產生奇怪的結果

由 restrict 修飾的指標是最初唯一對指標所指向的物件進行訪問的方法,僅當第二個指標基於第乙個時,才能對物件進行訪問。對物件的訪問都限定於基於由 restrict 修飾的指標表示式中。 由 restrict 修飾的指標主要用於函式形參,或指向由 malloc() 分配的記憶體空間。restrict 資料型別不改變程式的語義。 編譯器能通過作出 restrict 修飾的指標是訪問物件的唯一方法的假設,更好地優化某些型別的例程。

Linux 執行緒操作函式總結

1 執行緒建立函式 int pthread create pthread t restrict tidp,const pthread attr t restrict attr,void start rtn void void restrict arg 返回值 若是成功建立執行緒返回0,否則返回錯誤的...

Linux執行緒介紹及函式操作

執行緒共享資源 乙個程序中的多個執行緒共享以下資源 1.可執行的指令 2.靜態資料 3.程序中開啟的檔案描述符 4.當前工作目錄 5.使用者id 6.使用者組id linux執行緒庫 pthread執行緒庫中提供以下操作 建立執行緒 執行緒 結束執行緒 同步和互斥機制 訊號量 互斥鎖 使用執行緒庫編...

linux 執行緒總結

1 同一程序執行緒的共享資源 a.堆 由於堆是在程序空間中開闢出來的,所以它是理所當然地被共享的 b.全域性變數 它是與具體某一函式無關的,所以也與特定執行緒無關 因此也是共享的 c.靜態變數雖然對於區域性變數來說,它在 中是 放 在某一函式中的,但是其存放位置和全域性變數一樣,存於堆中開闢的.bs...