pthread_create
創(chuàng)建一個線程
pthread_self
返回當(dāng)前線程的線程id
pthread_exit()
注意和exit()的區(qū)別,exit()函數(shù)退出的是進程带膜,調(diào)用exit()就意味著所有的線程都會退出吩谦,而pthread_exit()退出的是當(dāng)前的線程。
pthread_join()
類似于進程中的wait()和waitpid()函數(shù)
pthread_detach()
實現(xiàn)線程分離
分離后的進程結(jié)束后會自動釋放資源膝藕,分離后的線程不需要使用pthread_join()函數(shù)回收
pthread_cancel()
相當(dāng)于殺死進程式廷,屬于非正常的銷毀進程
注意使用cancel函數(shù)是在線程的cancel點進行銷毀的,cancel點可以是系統(tǒng)調(diào)用芭挽,也就是說子線程要在系統(tǒng)調(diào)用的時候才能被銷毀滑废。也可以手動添加cancel點 pthread_testcancel()
pthread_equal()
比較兩個線程是否相等
線程屬性
pthread_attr_init() 創(chuàng)建一個線程
pthread_attr_destory() 銷毀一個線程
pthread_attr_setdetachstate() 設(shè)置線程的分離狀態(tài)
pthread_attr_getdetachstate() 獲取線程的分離狀態(tài)
detachstate:PTHREAD_CREATE_DETACH 分離線程
PTHREAD_CREATE_JOINABLE 非分離線程
pthread_attr_setstack() 改變線程的棧空間大小
pthread_attr_getstack() 獲取線程的椡嘧Γ空間大小
線程同步
互斥鎖
pthread_mutex_init()
pthread_mutex_destroy()
pthread_mutex_lock()
pthread_mutex_trylock()
pthread_mutex_unlock()
讀寫鎖
讀共享蠕趁,寫?yīng)氄迹瑢憙?yōu)先級高
pthread_rwlock_init()
pthread_rwlock_destroy()
pthread_rwlock_rdlock()
pthread_rwlock_wrlock()
pthread_rwlock_tryrdlock()
pthread_rwlock_trywrlock()
pthread_rwlock_unlock()
條件變量
條件變量本身并不是鎖辛馆,但也可以造成線程的阻塞俺陋,可以和互斥鎖配合使用
pthread_cond_init()
pthread_cond_destroy()
pthread_cond_wait() //等待一個條件滿足,阻塞昙篙,并且釋放互斥鎖腊状,當(dāng)被喚醒的時候重新加鎖
pthread_cond_timedwait()
pthread_cond_signal() //喚醒至少一個線程
pthread_cond_broadcast()// 喚醒所有的線程
信號量
sem_init()
sem_destroy()
sem_wait()//相當(dāng)于lock,信號量減一
sem_trywait()
sem_timewait()
sem_post()//相當(dāng)于unlock苔可,信號量加一
進程同步
互斥量mutex
pthread_mutexattr_setpshared()
文件鎖
fcntl()