std::mutex 和 std::lock_guard 小例子

参考:http://stackoverflow.com/questions/21771860/how-to-make-sure-locker-be-unlock-in-c-which-solution-is-better?noredirect=1#comment32938315_21771860


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 写出来的代码更简洁和通用。

你可能感兴趣的:(std::mutex 和 std::lock_guard 小例子)