一.mute用途
主要用於多執行緒訪問同一臨界資源時,保證訪問的互斥性。同一時間只能有乙個執行緒訪問該臨界資源。
對應系統原始碼實現:
inline mutex:
:mutex
(int type,
const
char
* name)
else
}inline mutex::~
mutex()
inline status_t mutex:
:lock()
inline
void mutex:
:unlock()
inline status_t mutex:
:trylock()
二.mute autolock的使用
為了便於使用互斥鎖,我們需要利用互斥鎖需要去申請鎖資源,在使用完畢後需要釋放互斥鎖,使用不當極易造成死鎖等問題。
此時autolock是mute下面的乙個類。通過物件的構造和析構函式來完成上鎖和釋放鎖資源,當我們對函式去使用互斥鎖時,可以直接
申請乙個物件的形式來完成上鎖。
mute autolock的原始碼實現。
class autolock
inline
autolock
(mutex* mutex)
:mlock
(*mutex)
//析構的時候呼叫unlock。
inline
~autolock()
private:
mutex& mlock;
};
使用方法
autolock物件應該被定義為區域性變數中的區域性變數,最好作用域僅僅只覆蓋要lock住的**塊。這樣在生命週期結束時就自動的把資源鎖解了,同時也不會導致鎖住的區域過大。
mutex m_lock;
//func1函式執行開始上鎖,執行完成之後釋放鎖
void
func1()
互斥鎖機制,互斥鎖與讀寫鎖區別
互斥鎖 mutex,用於保證在任何時刻,都只能有乙個執行緒訪問該物件。當獲取鎖操作失敗時,執行緒會進入睡眠,等待鎖釋放時被喚醒 讀寫鎖 rwlock,分為讀鎖和寫鎖。處於讀操作時,可以允許多個執行緒同時獲得讀操作。但是同一時刻只能有乙個執行緒可以獲得寫鎖。其它獲取寫鎖失敗的執行緒都會進入睡眠狀態,直...
鎖 互斥鎖,死鎖
當多個執行緒幾乎同時修改某乙個共享資料的時候,需要進行同步控制 執行緒同步能夠保證多個執行緒安全訪問競爭資源,最簡單的同步機制是引入互斥鎖。互斥鎖為資源引入乙個狀態 鎖定 非鎖定 某個執行緒要更改共享資料時,先將其鎖定,此時資源的狀態為 鎖定 其他執行緒不能更改 直到該執行緒釋放資源,將資源的狀態變...
執行緒 互斥鎖
include include include include include 1.靜態初始化,當動態初始化時,遮蔽靜態初始化 pthread mutex t mutex pthread mutex initializer 2.動態初始化 pthread mutex t mutex int lock...