linux多線程編程(有關線程操作的函數)

#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函數獲取該線程的返回值

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章