pthread相關介紹

pthread相關介紹
 
int pthread_create(pthread_t *tid, const pthread_attr_t *attr, void*(*start_routine)(void*),  void *arg);
參數tid用於返回新建立線程的線程號;start_routine是線程函數指針,線程從這個函數開始運行;arg是傳遞給線程函數的參數。因爲start_routine是一個指向參數類型爲void*,返回值爲void*的指針,因此若是須要傳遞或返回多個參數時,能夠使用強制類型轉化。

void pthread_exit(void* value_ptr);
參數value_ptr是一個指向返回狀態值的指針。

int pthread_join( pthread_t tid,  void **status);
參數tid是但願等待的線程的線程號,status是指向線程返回值的指針,線程的返回值就是pthread_exit中的value_ptr參數,或者是return語句中的返回值,該函數可用於線程間的同步。

int pthread_mutex_init(pthread_mutex_t *mutex,const pthread_mutex_attr_t* attr);
該函數初始化一個互斥變量,若是參數attr爲NULL,則互斥體變量mutex使用默認的屬性。

int pthread_mutex_lock(pthread_mutex_t *mutex);
該函數用來鎖住互斥體變量,若是參數mutex所指的互斥體已經被鎖住了,那麼發出調用的線程將被阻塞直到其餘線程對mutex解鎖。

int pthread_mutex_trylock(pthread_t *mutex);
該函數用來鎖住mutex所指定的互斥體,但不阻塞。若是該互斥體已經被上鎖,該調用不會阻塞等待,而會返回一個錯誤代碼。

int pthread_mutex_unlock(pthread_mutex_t *mutex);
該函數用來對一個互斥體解鎖。若是當前線程擁有參數mutex所指定的互斥體,該調用將該互斥解鎖。

int pthread_mutex_destroy(pthread_mutex_t *mutex);
該函數用來釋放分配給參數mutex的資源。調用成功時返回值爲0,不然返回一個非0的錯誤代碼。

int pthread_cond_int(pthread_cond_t *cond,const pthread_cond_attr_t *attr);
該函數按參數attr指定的屬性建立一個條件變量。調用成功返回,並將條件變量ID賦值給參數cond,不然返回錯誤代碼。

int pthread_cond_wait(pthread_cond_t *cond,pthread_mutex_t *mutex);
該函數調用爲參數mutex指定的互斥體解鎖,等待一個事件(由參數cond指定的條件變量)發生。調用函數的線程被阻塞直到有其餘線程調用pthread_cond_signal或pthread_cond_broadcast函數置相應的條件變量,並且得到mutex互斥時才解除阻塞。

int pthread_cond_timewait(pthread_cond_t *cond,pthread_mutex_t *mutex,const struct timespec *abstime);
該函數與pthread_cond_wait不一樣的是當系統時間到達abstime參數指定的時間時,被阻塞線程也能夠被喚起繼續執行。

int pthread_cond_broadcast(pthread_cond_t *cond);
該函數用來對全部等待參數cond所指定的條件變量的線程解除阻塞,調用成功返回0,不然爲錯誤代碼。

int pthread_cond_signal(pthread_cond_t *cond);
該函數的做用是解除一個等待參數cond所指定的條件變量,也只喚醒一個線程。

int pthread_cond_destroy(pthread_cond_t *cond);
該函數釋放一個條件變量。釋放爲條件變量cond所分配的資源。調用成功返回值爲0,不然爲錯誤代碼。

int pthread_key_create(pthread_key_t key,void(*destructor(void*)));
該函數建立一個鍵值,該鍵值映射到一個專有數據結構體上。若是第二個參數不是NULL,這個鍵值被刪除時將調用這個函數指針來釋放數據空間。

int pthread_key_delete(pthread_key_t *key);
該函數用於刪除一個由pthread_key_create函數調用建立的TSD鍵。調用成功返回值0,不然爲返回錯誤代碼。

int pthread_setspecific(pthread_key_t key,const void(value));
該函數設置一個線程專有數據的值,賦給由pthread_key_create建立的TSD鍵,調用成功返回值爲0,不然返回錯誤代碼。

void* pthread_getspecific(pthread_key_t *key);
該函數得到綁定到指定的TSD鍵上的值。調用成功,返回給定參數key所對應的數據。若是沒有數據鏈接到該TSD鍵,則返回NULL。
int pthread_once(pthread_once_t* once_control,void(*int_routine)(void)); 該函數的做用是確保init_routine指向的函數,在調用pthread_once的線程中只被運行一次。once_control指向一個靜態或全局的變量。 謝謝許超的帖子。
相關文章
相關標籤/搜索