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

https://blog.csdn.net/yasi_xi/article/details/19205461

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

猜你喜欢

转载自blog.csdn.net/chengde6896383/article/details/84337070
今日推荐