#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),不会因为某个线程异常退出而影响其他线程。
待续