1. 程式人生 > >std::mutex 和 std::lock_guard 小例子

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 寫出來的程式碼更簡潔和通用。