立即学习:https://edu.youkuaiyun.com/course/play/9377/196525?utm_source=blogtoedu
1.unique_lock取代lock_guard
unique_lock是个类模板。工作中一般lock_guard足够了(推荐使用)。
unique_lock使用方式和lock_guard创建方式一样。
unique_lock<mutex> submutex(mymutex);
2.unique_lock的第二个参数
2.1 std::adopt_lock
这个标记的效果,假设调用线程一方已经lock成功。通知lock_guard不需要在构造函数中lock。
灵活性。
2.2std::try_to_lock
unique_lock<mutex> submutex(mymutex, std::try_to_lock);
if (submutex.owns_lock())
...
else
...
2.3std::defer_lock
初始化一个未加锁的mutex。
3.unique_lock的成员函数
3.1lock()
3.2unlock()
3.3try_lock()
3.4release()
release 返回一个mutex指针
接管过来需要看好后面自己负责的操作。
4.unique_lock所有权的传递。