執行緒物件
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 建立乙個執...