#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函式獲取該執行緒的返回值