首先,遞歸鎖是什么 首先,對於互斥鎖,分為遞歸鎖和非遞歸鎖。 在不同的線程中調用已鎖定的互斥鎖,必然會導致死鎖。 但是在同一個線程中,如果想要多次獲得一個鎖,只能使用遞歸鎖 其次,遞歸鎖是不被提倡的,用到遞歸鎖說明這個代碼設計是有問題的。 更好的做法是,提取出一個被兩個個公有函數調用的私有函數,這個私有函數無需鎖定mutex 盡量使用非遞歸鎖,在程序邏輯有問題時,產生死鎖暴露出問題。 有些邏輯特別混亂或涉及三方開發對外提供服務不得已時,再用遞歸鎖 c++11 提供了 std::recursive_mutex 這種遞歸鎖的類型