#include
std::mutex socket_list_mu_;
socket_list_mu_.lock();
socket_list_mu_.unlock();
使用mutex是不安全的,當乙個執行緒在解鎖之前異常退出了,那麼其它被阻塞的執行緒就無法繼續下去.
std::lock_guardlock(socket_list_mu_);
使用lock_guard則相對安全,它是基於作用域的,能夠自解鎖,當該物件建立時,它會像
socket_list_mu_.lock()
一樣獲得互斥鎖,當生命週期結束時,它會自動析構(unlock),不會因為某個執行緒異常退出而影響其他執行緒。 待續
boost互斥鎖 boost鎖使用總結
boost鎖的概述 boost庫中提供了mutex類與lock類,通過組合可以輕易的構建讀寫鎖與互斥鎖。舉個通俗的例子,如果共享資源是乙個自動鎖住的房間,互斥體是鑰匙,進入房間必須取鑰匙,離開房間應該還鑰匙。這就對應著互斥體的lock 取鑰匙 和unlock 還鑰匙 動態分配記憶體存在類似的情況。如...
boost互斥鎖 boost 同步 互斥量的概念
互斥物件有利於實現多執行緒中資料的執行緒安全。執行緒呼叫鎖函式來獲得互斥物件的所有權,呼叫對應的解鎖函式來放棄所有權。互斥量可以是遞迴或非遞迴的,並且可以同時把所有權賦給多個執行緒。boost.thread提供獨佔的遞迴 非遞迴互斥量,以及共享 多讀單一寫 互斥量。basiclockable概念 b...
boost 互斥體和鎖
1 共享資源是乙個自動鎖住的房間,互斥體是鑰匙,進入房間必須取鑰匙,離開房間應該還鑰匙。這就對應著互斥體的lock 取鑰匙 和unlock 還鑰匙 2 考慮下面的場景 還鑰匙的時候出現異常,會發生什麼?導致死鎖,因為鑰匙歸還失敗,所有人都沒法再取到鑰匙。3 如何解決這個問題?想一下,動態分配記憶體存...