一 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...