C 並行開發Pthread之執行緒(一)

2021-07-10 14:51:41 字數 3124 閱讀 6288

執行緒物件

pthread_t

狀態:可執行、執行、停止、休眠(阻塞)

pthread

庫可用於建立、維護和管理多執行緒和應用程式中的執行緒。

1.

建立執行緒

int pthread_create

(pthread_t * restrict thread,const pthread_attr_t *restrict attr,void*(*start_routine)(void*),void*restrict arg);

若成功則返回

0,否則返回出錯編號 引數

第乙個引數為指向執行緒

識別符號的指標。

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

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

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

2.

結合執行緒(

pthread_join

pthread_join

用於結合或者再次結合程序中的控制流。

pthread_join

導致呼叫執行緒它掛起,直到目標程序終止。它類似程序所使用的

wait()

函式。這個函式有執行緒的建立者呼叫,該呼叫執行緒等待新的執行緒終止並返回,然後再次結合到呼叫執行緒的控制流中。

intpthread_join(pthread_t thread,void **value_ptr) 引數

thread

是呼叫執行緒正在等待的目標執行緒。如果目標執行緒成功返回,則它的退出狀態儲存在

value_ptr中

3.

獲取執行緒的

id

pthread_tpthread_self(void)

當乙個執行緒被建立之後,會將執行緒

id返回到呼叫執行緒。一旦執行緒有了自己的

id之後,可以將

id傳遞給程序中的其他執行緒。

4.

比較兩個執行緒

pthread_equal(pthread_tthreada, pthread_t threadb)

如果相同,返回非零值,否則返回零。

5.

執行緒屬性物件

pthread_attr_t

執行緒有一組屬性是可以在建立執行緒的時候指定。該屬性封裝在乙個物件中,可以用來設定乙個或者一組執行緒的屬性。

pthread_attr_t

擁有一些方法來設定

屬性函式的型別

pthread

屬性函式

初始化pthread_attr_init()

pthread_attr_destory()

棧管理pthread_attr_setstacksize()

pthread_attr_getstacksize()

pthread_attr_setguardiseze ()

pthread_attr_getguardiseze ()

pthread_attr_setstack ()

pthread_attr_getstack ()

pthread_attr_setstackddr ()

pthread_attr_getstackddr ()

分離狀態

pthread_attr_setdetachstate ()

pthread_attr_getdetachstate ()

競爭範圍

pthread_attr_setscope ()

pthread_attr_getscope ()

排程繼承機制

pthread_attr_setinheritsched()

pthread_attr_getinheritsched()

排程策略

pthread_attr_setschedpolicy()

pthread_attr_getschedpolicy()

排程引數

pthread_attr_setschedparam()

pthread_attr_getschedparam()

6.

使用pthread

建立分離的執行緒

id。如果退出的執行緒不同其他執行緒結合,則稱退出的執行緒是分離的

(detached)

。這種情況下,不儲存完成狀態和執行緒

id。在分離的執行緒上不能使用

pthread_join

。否則會報錯。

已經執行的執行緒是可以分離的。執行緒可能不再對目標執行緒結果感興趣,執行緒可以分離,使得執行緒一旦退出,它的資源就可以被收回。

呼叫形式

intpthread_detach(pthread_t tid);

二、管理執行緒

1.

終止執行緒

當執行緒到達程式指令結尾時,就會終止。當執行緒終止後,

pthread

庫收回執行緒使用的系統資源並儲存它的退出狀態。執行緒也可能會在它執行完所有指令之前,並另乙個對等的執行緒提取終止。 a.

自終止

執行緒可以呼叫

pthread_exit()

方法來終止

int pthread_exit(void * value_ptr)

當可結合執行緒結束執行之後,它會返回到將它作為目標執行緒呼叫

pthread_join

的執行緒。當終止執行緒呼叫

pthread_exit()

時候,它在

$value_ptr

中得到退出狀態。退出狀態被返回到

pthread_join. b.

終止對等執行緒 使用

pthread_cancel()

來終止對等執行緒。應用程式中可能會有乙個執行緒監視其他執行緒的工作。如果某個執行緒執行不力或者是不在需要,為了節省系統資源,有必要終止該執行緒。多個執行緒可能用於解決乙個問題,但是一旦某個執行緒得到解答,其他的執行緒可以被監視執行緒或是是得到解答的執行緒取消。 對於

pthread_cancel

的呼叫時取消乙個對等執行緒的請求。這個請求可能立即被同意、稍後被同意、甚至被忽略。

C 之並行開發

並行開發 加速遊戲 處理器製造商有用他們的cpu在每秒。這看起來是模型cpu在桌面電腦,台式以及手機,cpu將要超過2.5ghz。cpu將要有yue來yue多的表現。在本章我們將要展示如何創造乙個執行緒來執行這個方法game rungame.這將要意味著主要的遊戲迴圈將要執行在它自己本身的執行執行緒...

pthread之執行緒堆疊

pthread之執行緒堆疊 先來講說執行緒記憶體相關的東西,主要有下面幾條 程序中的所有的執行緒共享相同的位址空間。任何宣告為static extern的變數或者堆變數可以被程序內所有的執行緒讀寫。乙個線 正擁有的唯一私有儲存是處理器暫存器。執行緒棧可以通過暴露棧位址的方式與其它執行緒進行共享。注意...

iOS開發 多執行緒實現方案之Pthread篇

1.匯入標頭檔案 import 2.pthread建立子執行緒 void viewdidload void void 返回值 函式名 函式引數 void task void param pthread t 執行緒id pthread attr t 執行緒屬性 pthread create 建立乙個執...