linux多執行緒程式設計(有關執行緒操作的函式)
阿新 • • 發佈:2019-02-07
#include <pthread.h> int pthread_create(pthread_t *tid, const pthread_attr_t *attr, void *(*func) (void *), void *arg); int pthread_join (pthread_t tid, void ** status); pthread_t pthread_self (void); int pthread_detach (pthread_t tid); void pthread_exit (void *status);
pthread_create用於建立一個執行緒,成功返回0,否則返回Exxx(為正數)。
- pthread_t *tid:執行緒id的型別為pthread_t,通常為無符號整型,當呼叫pthread_create成功時,通過*tid指標返回。
- const pthread_attr_t *attr:指定建立執行緒的屬性,如執行緒優先順序、初始棧大小、是否為守護程序等。可以使用NULL來使用預設值,通常情況下我們都是使用預設值。
- void *(*func) (void *):函式指標func,指定當新的執行緒建立之後,將執行的函式。
- void *arg:執行緒將執行的函式的引數。如果想傳遞多個引數,請將它們封裝在一個結構體中。
pthread_join用於等待某個執行緒退出,成功返回0,否則返回Exxx(為正數)。
- pthread_t tid:指定要等待的執行緒ID
- void ** status:如果不為NULL,那麼執行緒的返回值儲存在status指向的空間中(這就是為什麼status是二級指標的原因!這種才引數也稱為“值-結果”引數)。
pthread_self用於返回當前執行緒的ID。
pthread_detach用於是指定執行緒變為分離狀態,就像程序脫離終端而變為後臺程序類似。成功返回0,否則返回Exxx(為正數)。變為分離狀態的執行緒,如果執行緒退出,它的所有資源將全部釋放。而如果不是分離狀態,執行緒必須保留它的執行緒ID,退出狀態直到其它執行緒對它呼叫了pthread_join。
程序也是類似,這也是當我們開啟程序管理器的時候,發現有很多僵死
程序的原因!也是為什麼一定要有僵死這個程序狀態。
pthread_exit用於終止執行緒,可以指定返回值,以便其他執行緒通過pthread_join函式獲取該執行緒的返回值