boost庫讀寫鎖與互斥鎖的用法解析

2021-06-29 01:05:12 字數 651 閱讀 1005

#include #include typedef boost::shared_mutex            wr_mutex;

typedef boost::unique_lockwritelock;

typedef boost::shared_lockreadlock;

wr_mutex lkey;

當在使用者讀一塊記憶體區域時,使用讀鎖,防止多個執行緒同時訪問同一塊記憶體造成資料錯誤

readlock lk(lkey);

當在使用者修改一塊記憶體區域時,使用寫鎖,防止多個執行緒在操作記憶體的時候對其進行訪問而造成資料錯誤

writelock lock(lkey);

boost鎖的概述:

boost庫中提供了mutex類與lock類,通過組合可以輕易的構建讀寫鎖與互斥鎖。

mutex物件類:

mutex類主要有兩種:boost::mutex,boost::shared_mutex,其中mutex有lock和unlock方法,

shared_mutex除了提供lock和unlock方法外,還有shared_lock和shared_unlock方法。

因此,boost::mutex為獨佔互斥類,boost::shared_mutex為共享互斥類。

互斥鎖機制,互斥鎖與讀寫鎖區別

互斥鎖 mutex,用於保證在任何時刻,都只能有乙個執行緒訪問該物件。當獲取鎖操作失敗時,執行緒會進入睡眠,等待鎖釋放時被喚醒 讀寫鎖 rwlock,分為讀鎖和寫鎖。處於讀操作時,可以允許多個執行緒同時獲得讀操作。但是同一時刻只能有乙個執行緒可以獲得寫鎖。其它獲取寫鎖失敗的執行緒都會進入睡眠狀態,直...

互斥鎖與讀寫鎖使用

sync.mutex和sync.rwmutex是go語言底層基礎物件,用於構建多個goroutine間的同步邏輯,當多個協程需要對共享資料讀寫時用到。具體實現極為簡潔,效能也 舉例 1.多個協程操作同乙個檔案 2.生產者消費者模型 具體例項我就以最簡單的列印方式說明互斥鎖 func print t ...

boost互斥鎖 boost鎖使用總結

boost鎖的概述 boost庫中提供了mutex類與lock類,通過組合可以輕易的構建讀寫鎖與互斥鎖。舉個通俗的例子,如果共享資源是乙個自動鎖住的房間,互斥體是鑰匙,進入房間必須取鑰匙,離開房間應該還鑰匙。這就對應著互斥體的lock 取鑰匙 和unlock 還鑰匙 動態分配記憶體存在類似的情況。如...