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