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指向一個靜態或全局的變量。
謝謝許超的帖子。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章