天天看點

Linux線程------函數用法詳解1.pthread_create()2.pthread_join()

去年擔任作業系統助教時就涉及到了線程建立函數,當時查閱資料之後做了紙質筆記,可誰想今年做Linux作業系統助教又涉及到了該函數,然而卻早已忘記該函數的各參數的使用……

1.pthread_create()

#include<pthread.h>

int pthread(pthread_t *thread, pthread_attr_t *attr, void *(*start_routine) (void *), void *arg);
           

建立函數看起來挺複雜的,用起來則比較簡單。

  1. 第一個參數是指向pthread_t類型資料的指針。線程被建立時,這個指針指向的變量将被寫入一個辨別符,用該辨別符來引用新線程。
  2. 第二個參數用來設定線程的屬性,我們一般不需要特殊的屬性,是以隻需設定該參數為null即可。
  3. 後面兩個參數告訴我們必須要傳遞一個函數位址,該函數以一個指向void指針為參數,傳回的也是一個指向void的指針。是以,可以傳遞一個任意類型的參數并傳回一個任意類型的指針。我們必須明确的給它提供一個函數指針,新線程将在這個新的位置開始執行。

該函數調用成功時傳回值為0,否則傳回錯誤代碼。

2.pthread_join()

#include<pthread.h>
int pthread_join(pthread_t th, void **thread_return);
           
  1. 第一個參數指定了将要等待的線程,線程通過pthread_create()函數傳回的辨別符來指定。
  2. 第二個參數是一個指針,它指向另一個指針,而後者指向另一個傳回值。

該函數與pthread_create()函數類似,函數調用成功時傳回0,否則傳回錯誤代碼

另外在編譯多線程程式時,要在指令最後加上-lpthread,為什麼要加入該選項呢?因為pthread.h不是linux預設連結庫,是以當我們需要引入該庫時則需要加入該選項。

如果您覺得該篇部落格寫的不錯,請随意打賞一下哦,部落格欄目左側有支付寶和微信二維碼,您的支援将鼓勵我進行更好的創作。

如果讀者朋友想轉載該文章,請尊重版權,轉載須注明出處,謝謝合作。

繼續閱讀