linux 多執行緒API

2021-07-05 00:23:09 字數 1796 閱讀 3861

執行於乙個程序中的多個執行緒,它們之間使用相同的位址空間,而且執行緒間彼此切換所需的時間遠遠小於程序間切換所需要的時間。據統計,乙個程序的開銷大約是乙個執行緒開銷的30倍左右。同一程序下的執行緒直接共享資料空間。

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

函式功能:建立執行緒。

thread:為指向執行緒識別符號的指標。(存放執行緒識別符號)

attr:執行緒屬性。(通常為空,為空代表使用預設屬性。預設的屬性為非繫結、非分離、預設 1m 的堆疊、與父程序同樣級別的優先順序,設定需要呼叫 pthread_attr_init 函式)

start_routine:執行緒要執行的函式。

arg:start_routine 函式的引數。

返回值:建立執行緒成功時,函式返回0,若不為0則說明建立執行緒失敗。

void pthread_exit(void *retval);

退出執行緒。

retval:呼叫執行緒的返回值,可由 pthread_join 來檢索獲取。(類似 return)

int pthread_join(pthread_t thread, void **retval);

以阻塞的方式等待 thread 指定的執行緒結束。當函式返回時,被等待執行緒如果已經結束,那麼該函式會立即返回。

thread : 執行緒識別符號,即執行緒id,標識唯一執行緒。

retval : 使用者定義的指標,用來儲存被等待執行緒的返回值。

返回值:0代表成功。 失敗,返回的則是錯誤號。

pthread_t pthread_self(void);

獲取執行緒的id。

void pthread_cleanup_push(void (*routine)(void *), void *arg);

將清除函式壓入清除棧

routine :清除函式。

arg:清除函式的引數。

void pthread_cleanup_pop(int execute);

將清除函式彈出清除棧

execute :決定執行到 pthread_cleanup_pop 時是否在彈出清理函式的同時執行該函式。值為 0 不執行,非 0 執行。

從 pthread_cleanup_push 的呼叫點到 pthread_cleanup_pop 之間的程式段中的終止動作(包括呼叫 pthread_exit 和 異常終止,不包括 return)都將執行 pthread_cleanup_push 所指的清理函式。

示例**:

#include #include #include #include #include #include void pthread_clean(void *arg)

void *thr_fun1(void *arg)

void *thr_fun2(void *arg)

void *thr_fun3(void *arg)

int main(int argc, char **argv)

linux多執行緒API函式

總結一下linux多執行緒程式設計用到的幾個api函式 一 pthread create 具體格式 include int pthread create pthread t thread,const pthread attr t attr,void start rtn void void arg 返...

Linux多執行緒實踐 2 執行緒基本API

與執行緒有關的函式構成了乙個完整的系列,絕大多數函式的名字都是以 pthread 開頭,要使用這些函式庫,要通過引入頭文,而且鏈結這些執行緒函式庫時要使用編譯器命令的 lpthread 選項 ubuntu系列系統需要新增的是 pthread 選項而不是 lpthread 如ubuntu 14.04版...

C 多執行緒技術 API

更多詳見msdn process and thread functions createthread將在主線程的基礎上建立乙個新執行緒,大致做如下步驟 1 在核心物件中分配乙個執行緒標識 控制代碼,可供管理,由createthread返回 2 把執行緒退出碼置為still active,把執行緒掛起...