pthread_create函式用於建立乙個執行緒
函式原型
#include
intpthread_create
(pthread_t *restrict tidp,
const pthread_attr_t *restrict attr,
void*(
*start_rtn)
(void*)
,void
*restrict arg)
;
引數與返回值
restrict關鍵字c99標準引入的,只能用於限定指標,表明指標是訪問乙個資料物件的唯一且初始的方式。概括的說,關鍵字restrict只用於限定指標;該關鍵字用於告知編譯器,所有修改該指標所指向內容的操作全部都是基於該指標的,即不存在其它進行修改操作的途徑;這樣的後果是幫助編譯器進行更好的**優化,生成更有效率的彙編**。
舉個例子:
int ar[10]
;int
* restrict restar =
(int*)
malloc(10
*sizeof
(int))
;int
* par=ar;
for(
int n=
0; n<
10; n++
)
即上述**中,對於malloc分配的這段記憶體只能通過restar訪問,並且restar[n] += 8
這樣的操作編譯器會進行優化,而par[n] += 8
這樣的操作不會進行優化。
下面是從c語言核心技術一書上摘的:
void *memcpy( void * restrict dest ,const void * restrict src,sizi_t n)
這是乙個很有用的記憶體複製函式,由於兩個引數都加了restrict限定,所以兩塊區域不能重疊,即 dest指標所指的區域,不能讓別的指標來修改,即src的指標不能修改. 相對應的別乙個函式memmove(void *dest,const void * src,size_t)
則可以重疊。
**3.2
**3.3
怎麼辦?
pthread_join函式用於等待某個執行緒終止,函式原型:
#include
intpthread_join
(pthread_t thread,
void
**rval_ptr)
;
呼叫該函式的執行緒將一直阻塞,直到指定的執行緒退出。
int
pthread_join
(pthread_t thread,
void
**rval_ptr)
;
返回值與引數
**3.4
函式原型
#include
intpthread_detach
(pthread_t tid)
;
引數與返回值
示例3.5
若pthread_join
比pthread_detach
先呼叫,也能獲取到退出資訊。
unix環境高階程式設計 執行緒解析
1 通過為每種事件型別分配單獨的處理執行緒,可以簡化處理非同步事件的 2 多個程序必須使用作業系統提供的複雜機制才能實現記憶體和檔案描述符的共享,而多個執行緒自動地可以訪問相同的儲存位址空間和檔案描述符 3 互動的程式可以通過使用多執行緒來改善響應時間,多執行緒可以把程式中處理使用者輸入輸出的部分與...
Linux環境高階程式設計 介紹
從今天開始。將開啟 linux環境高階程式設計 advanced programming of linux enviroment 的學習筆記或者說總結,我將持續和大家分享自己的學習成果。本系列部落格依託於lilin老師的課程,也基本上來自於課程的內容。在得到老師的允許和允許情況。我在github上新...
Unix環境高階程式設計筆記 11 執行緒
1 執行緒概念 執行緒包含了表示程序內執行環境必須的資訊,其中包括程序中標識執行緒的執行緒id 一組暫存器值 棧 排程優先順序和策略 訊號遮蔽字 errno變數以及執行緒私有資料。程序的所有資訊對該程序的所有執行緒都是共享的,包括可執行的程式文字 程式的全域性記憶體和堆記憶體 棧以及檔案描述符。2 ...