#include <mutex>
std::mutex socket_list_mu_;
socket_list_mu_.lock();
socket_list_mu_.unlock();
使用mutex是不安全的,當一個線程在解鎖之前異常退出了,那麼其它被阻塞的線程就無法繼續下去.
std::lock_guard<std::mutex> lock(socket_list_mu_);
使用lock_guard則相對安全,它是基於作用域的,能夠自解鎖,當該對象創建時,它會像socket_list_mu_.lock()一樣獲得互斥鎖,當生命週期結束時,它會自動析構(unlock),不會因爲某個線程異常退出而影響其他線程。
待續