函數名稱 |
函數功能 |
說明 |
pthread_create |
創建線程 |
線程變量:pthread_t |
pthread_equal |
判斷兩個線程ID是否相等 |
|
pthread_self |
獲得自身的線程ID |
|
pthread_exit |
終止一個線程 |
|
pthread_join |
等待一個線程 |
除非指定線程調用pthread_exit、從啓動例程返回或者被取消,否則調用線程將一直阻塞 類似於waitpid的功能 |
pthread_detach | 分離一個線程 |
|
pthread_cancel |
請求取消一個線程 |
並不等待線程終止,僅提出請求 |
pthread_cleanup_push |
註冊一個線程退出函數 |
必須與pthread_cleanup_pop成對出現 |
pthread_cleanup_pop |
調用註冊的線程退出函數 |
必須與pthread_cleanup_push成對出現 |
pthread_mutex_init |
初始化互斥量 |
互斥量 變量類型:pthread_mutex_t |
pthread_mutex_destory |
銷燬互斥量,需要在釋放內存前調用 |
|
pthread_mutex_lock |
對互斥量進行加鎖,如果已經加鎖則阻塞 |
|
pthread_mutex_trylock |
嘗試對互斥量進行加鎖,如果已經加鎖,則返回EBUSY |
|
pthread_mutex_unlock |
對互斥量進行解鎖 |
|
pthread_mutex_timedlock |
帶超時的對互斥量的加鎖,時間是絕對時間而非相對時間 |
|
pthread_rwlock_init |
初始化讀寫鎖 |
讀寫鎖 變量類型:pthread_rwlock_t |
pthread_rwlock_destroy |
銷燬讀寫鎖,需要在釋放讀寫鎖佔用的內存之前調用 |
|
pthread_rwlock_rdlock |
以讀模式進行加鎖 |
|
pthread_rwlock_wrlock |
以寫模式進行加鎖 |
|
pthread_rwlock_unlock |
解鎖讀寫鎖 |
|
pthread_rwlock_timedrdlock |
帶超時的以讀模式加鎖 |
|
pthread_rwlock_timedwrlock |
帶超時的以寫模式加鎖 |
|
pthread_cond_init |
初始化條件變量 |
條件變量 適用於異步等待某個處理結果 變量類型:pthread_cond_t |
pthread_cond_destory |
對條件變量進行反初始化,需要在釋放條件變量底層的內存空間之前調用 |
|
pthread_cond_wait |
等待條件變量爲真 |
|
pthread_cond_timedwait |
帶超時的等待條件變量爲真,時間爲絕對時間 |
|
pthread_cond_signal |
通知線程條件已經滿足,至少能喚醒一個線程 |
|
pthread_cond_broadcast |
通知線程條件已經滿足,喚醒所有等待該條件的線程 |
|
pthread_spin_init |
對自旋鎖進行初始化 |
自旋鎖 與互斥量類似,但不是通過休眠使進程阻塞,而是在獲取之前一直在忙等(自旋)。在等待自旋鎖可用之前,CPU不能做其他的事情 變量類型:pthread_spinlock_t |
pthread_spin_destory |
對自旋鎖進行反初始化 |
|
pthread_spin_lock |
獲取自旋鎖,獲取成功之前一直在自旋 |
|
pthread_spin_trylock |
獲取自旋鎖,如果不能成功,立即返回EBUSY |
|
pthread_spin_unlock |
解鎖自旋鎖 |
|
pthread_barrier_init |
初始化屏障 |
屏障 當阻塞線程達到設定值,則所有阻塞線程均被喚醒 變量類型:pthread_barrier_t |
pthread_barrier_destroy |
對屏障進行反初始化 |
|
pthread_barrier_wait |
線程等待,表明線程已經完成工作,準備等待其他線程趕上來 |
線程的學習(一)
線程的初步重點在線程的創建、分離、退出、同步。
線程分離:分離的線程在線程完成後,系統會自動回收他的儲存器資源;不分離的線程,如果不pthread_join或者不結束整個進程,系統不會回收資源。
線程同步:共有互斥量、讀寫鎖、條件變量、自旋鎖、屏障共五種方式。
各種同步,只是提供了一種機制,並不是用了以後就會一定實現同步,仍然需要人爲的控制使用邏輯才能實現同步。
線程退出:1、線程可以簡單的從啓動例程中返回,指return,啓動例程,即線程的執行函數
2、線程可以被同一進程的其他線程取消
3、線程調用pthread_exit
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.