系統程式設計之執行緒

2021-10-04 13:15:18 字數 2469 閱讀 3869

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程式的儲存空間是如何分配的 從高位址到低...