线程同步的各种方法汇总
?
目錄
互斥鎖
讀寫鎖
自旋鎖
條件變量
屏障
互斥鎖
兩種狀態(tài):
(1)加鎖,pthread_mutex_lock() 。
(2)不加鎖,pthread_mutex_unlock() 。
讀寫鎖
三種狀態(tài):
(1)讀模式下的加鎖狀態(tài),多個線程可以同時占有該鎖,pthread_rwlock_rdlock() 。
(2)寫模式下的加鎖狀態(tài),只有一個線程占有該鎖,pthread_rwlock_wrlock() 。
(3)不加鎖狀態(tài),pthread_rwlock_unlock() 。
自旋鎖
特有性質(zhì):線程在獲取鎖之前一直處于忙等狀態(tài)(自旋)。
兩種狀態(tài):
(1)加鎖,pthread_spin_lock() 。
(2)不加鎖,pthread_spin_unlock() 。
條件變量
1、功能:為線程提供了一種匯合的場所。
2、常用函數(shù):pthread_cond_wait(pthread_cond_t,pthread_mutex_t) 。
mutex 的作用是對 cond 進行保護,因為函數(shù)的功能是把調(diào)用函數(shù)放到等待 cond 變化的線程列表中,如果在放置的過程中,沒有對條件進行加鎖,那么條件變化了,調(diào)用線程是無法感知的,從而導(dǎo)致了未知的錯誤。
屏障
功能:允許每個線程等待,知道所有的合作線程都到達某一點,然后再繼續(xù)往下執(zhí)行。
栗子:pthread_join() 。
?
(SAW:Game Over!)
總結(jié)
以上是生活随笔為你收集整理的线程同步的各种方法汇总的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Linux 进程状态详解
- 下一篇: mmap 和 shm 区别