互斥鎖Mute AutoLock的使用

2021-10-10 14:03:51 字數 1084 閱讀 6075

一.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...