C C 多執行緒 pthread 庫相關函式說明

2021-08-20 14:20:03 字數 1487 閱讀 3360

一 pthread_t

pthread_t在標頭檔案 #include ;

它是乙個

執行緒的識別符號

二 pthread_create()

函式 pthread_create() 用來建立乙個執行緒,它的原型為:

extern int pthread_create __p ((pthread_t *__thread,__const pthread_attr_t *__attr,void *(*__start_routine) (void *),void *__arg));

第乙個引數為

指向執行緒識別符號的指標,第二個引數用來設定執行緒屬性,第三個引數是

執行緒執行函式的起始位址,最後乙個引數是執行函式的引數。這裡,我們的函式thread不需要引數,所以最後乙個引數設為空指標。

第二個引數我們也設為空指標,這樣將生成預設屬性的執行緒。

當建立執行緒成功時,函式返回0,若不為0則說明建立執行緒失敗,常見的錯誤返回**為eagain和einval。前者表示系統限制建立新的執行緒,例如執行緒數目過多了;後者表示第二個引數代表的執行緒屬性值非法。建立執行緒成功後,新建立的執行緒則執行引數三和引數四確定的函式,原來的執行緒則繼續執行下一行**。

三 pthread_join() / pthread_exit()

函式 pthread_join() 用來等待乙個執行緒的結束。函式原型為:

extern int pthread_join __p ((pthread_t __th, void **__thread_return));

第乙個引數為被等待的執行緒識別符號,第二個引數為乙個使用者定義的指標,它可以用來儲存被等待執行緒的返回值

這個函式是乙個執行緒阻塞的函式呼叫它的函式將一直等待到被等待的執行緒結束為止,當函式返回時,被等待執行緒的資源被收回。乙個執行緒的結束有兩種途徑,一種是象我們上面的例子一樣,函式結束了,呼叫它的執行緒也就結束了;另一種方式是通過函式 pthread_exit() 來實現。它的函式原型為:

extern void pthread_exit __p ((void *__retval)) __attribute__ ((__noreturn__));

唯一的引數是函式的返回**,只要 pthread_join

() 中的第二個引數thread_return不是null,這個值將被傳遞給 thread_return。最後要說明的是,乙個執行緒不能被多個執行緒等待,否則第乙個接收到訊號的執行緒成功返回,其餘呼叫 pthread_join

() 的執行緒則返回錯誤**esrch。

pthread 多執行緒

多執行緒程式指的是在同乙個程式中多個執行流併發執行,它們共享程序的同乙個位址空間,分別完成相應的任務,並通過共享位址空間等方式完成執行緒間通訊,cpu按照時間片輪轉等方式對執行緒進行切換和排程。通常而言,執行緒共享的程序資源包括 linux中線程的建立依賴於lpthread.so 庫,建立乙個thr...

Linux 多執行緒 pthread庫初探

linux 多執行緒 pthread庫用法 一 linux 執行緒有時候也叫light weight processlwp 輕量級執行緒,是程序的乙個執行流,有自己的執行棧,是作業系統排程的最小單位。多執行緒優勢在於切換開銷小,同程序內通訊方便,涉及io等阻塞性操作時可以單獨開乙個執行緒不阻塞主流程...

C C 多執行緒程式設計之四 終止pthread執行緒

多執行緒程式設計之終止pthread執行緒 pthread是posix threads的簡稱,是posix的執行緒標準。終止執行緒似乎是多執行緒程式設計的最後一步,但絕不是本系列教材的結束。執行緒建立到執行緒終止,希望先給讀者乙個關於多執行緒程式設計的整體認識。1.終止pthread執行緒 pthr...