https://blog.csdn.net/yasi_xi/article/details/19205461
Linux下,固然我们可以用 pthread_mutex_t 及 pthread_mutex_lock/unlock 来做多线程同步,但是通常要自己再封装一下,比如像《pthread_mutex_t 的简单封装》。但是,C++ 11 支持更简洁优雅的做法:
// global mutex
std::mutex mutex;
void f()
{
// lock mutex
std::lock_guard<std::mutex> lock(mutex);
//do something might throw exception
//...
//do not unlock mutex, it will be unlocked by lock_guard destructor
}
除了 std::mutex,还有 std::recursive_mutex 等,和 pthread_mutex_t 的各种类型相对应。
相比pthread_mutex_t,用 stl 写出来的代码更简洁和通用。