pthread_t tid;(建立執行緒號,多個執行緒可以用陣列來實現,如pthread_t tid[3]);
函式原型:int pthread_create(pthread_t tid,const pthread_attr_t restrict_attr,void(start_rtn)(void),void *restrict arg);
引數:
第乙個引數為指向執行緒識別符號的指標。(執行緒的執行緒號)
第二個引數用來設定執行緒屬性。(一般為null)
第三個引數是執行緒執行函式的起始位址。(執行緒函式名)
最後乙個引數是執行函式的引數。(給執行緒函式傳的引數,如果沒有引數就是null)
返回值
若成功則返回0,否則返回出錯編號(失敗不是返回-1)
另外
在編譯時注意加上-lpthread引數,以呼叫靜態鏈結庫。因為pthread並非linux系統的預設庫
pthread_join函式
函式簡介
函式pthread_join用來等待乙個執行緒的結束。
函式原型為:
extern int pthread_join __p (pthread_t __th, void **__thread_return);
引數:
第乙個引數為被等待的執行緒識別符號;
第二個引數為乙個使用者定義的指標,它可以用來儲存被等待執行緒的返回值。這個函式是乙個執行緒阻塞的函式,呼叫它的函式將一直等待到被等待的執行緒結束為止,當函式返回時,被等待執行緒的資源被收回。如果執行成功,將返回0,如果失敗則返回乙個錯誤號。
pthread_detach()函式用來**執行緒,引數為要**的執行緒的執行緒號,pthread_self()函式用來獲得本執行緒的執行緒號,所以如果要**本執行緒,可以pthread_detach(pthread_self());
#include
#include
#include
#include
void
*mythread1
(void
*arg)
}void
*mythread2
(void
*arg)
}int
main()
;int ret =
pthread_create
(&tid[0]
,null
, mythread1,
null);
if(ret !=0)
ret =
pthread_create
(&tid[1]
,null
, mythread2,
"helloworld");
if(ret !=0)
void
*status;
pthread_join
(tid[0]
,&status)
;//等待執行緒結束,**執行緒資源
pthread_join
(tid[1]
,&status)
;return0;
}
這個地方記錄三種方法
return (void *)1 因為函式返回值是void *型別,所以要把1 強轉成void *型別
執行緒退出函式: pthread_exit((void *)100);跟上面同理;
pthread_cancel(tid);可以在乙個執行緒中取消另乙個執行緒,讓另乙個執行緒退出;
**:
#include
#include
#include
#include
pthread_t tid[2]
=;void
*mythread1
(void
*arg)
void
*mythread2
(void
*arg)
intmain()
ret =
pthread_create
(&tid[1]
,null
, mythread2,
null);
if(ret !=0)
void
*status;
pthread_join
(tid[0]
,&status)
;printf
("執行緒1 退出,退出狀態%p\n"
,status)
;pthread_join
(tid[1]
,&status)
;printf
("執行緒2 退出,退出狀態%p\n"
,status)
;return0;
}
系統程式設計之檔案系統程式設計
系統呼叫 所有的作業系統都提供多種服務的入口點,程式由此向核心請求服務。這些可直接進入核心的入口點被稱為系統呼叫。不同作業系統提供了自己的一套系統呼叫,所以系統呼叫無法實現跨平台使用。而且頻繁地系統呼叫,在使用者態和核心態之間切換,很耗費資源,效率不高。c標準庫提供了操作檔案的標準i o函式庫,與系...
Linux系統程式設計之執行緒條件變數
include include include include pthread cond t cond pthread cond initializer 初始化條件變數 pthread mutex t mutex pthread mutex initializer 靜態初始化互斥鎖 struct m...
系統程式設計之程序
一 程序相關概述 1 相關指令 ps aux 檢視所有程序 ps aux grep 程序 只會過濾出指定程序資訊 top 指令類似windows任務管理器 2 程序描述符 pid pid 0 稱為交換程序 程序排程 pid 1 init程序 系統初始化 二 c程式的儲存空間是如何分配的 從高位址到低...