std::lock_guard 和 std::unique_lock的区别
来源:互联网 发布:蒙泰端口设置 编辑:程序博客网 时间:2024/05/21 05:07
大部分情况下,两者的功能是一样的,不过unique_lock 比lock_guard 更灵活.
unique_lock提供了lock, unlock, try_lock等接口.
lock_guard没有多余的接口,构造函数时拿到锁,析构函数时释放锁
lock_guard 比unique_lock 要省时.
class A{public: std::mutex m;};A e1,e2;...std::unique_lock<std::mutex> lk1(e1.m, std::defer_lock);std::unique_lock<std::mutex> lk2(e2.m, std::defer_lock);std::lock(lk1, lk2);std::cout << e1.id << " and " << e2.id << " got locks" << std::endl;
class A{public: std::mutex m;};A e1,e2;...std::lock(e1.m, e2.m);std::lock_guard<std::mutex> lock_a(e1.m, std::adopt_lock);std::lock_guard<std::mutex> lock_b(e2.m, std::adopt_lock);
1) lock_guard 同一时间锁住两个mutex, 再创建guards用来管理锁的释放工作
2)unique_lock 先创建guards, 再同时锁住两个锁
C++17已经讲lock_guard标注为 Deduction guides(since C++17)
阅读全文
0 0
- std::lock_guard 和 std::unique_lock的区别
- std::lock_guard std::unique_lock 区别
- std::mutex std::unique_lock std::lock_guard std::recursive_mutex的理解
- std::lock_guard and std::unique_lock
- lock_guard和unique_lock的区别
- C++11 std::unique_lock与std::lock_guard区别及多线程应用实例
- C++11中lock_guard和unique_lock的区别
- c++11的mutex unique_lock和lock_guard区别
- std::mutex 和 std::lock_guard 小例子
- std::mutex 和 std::lock_guard 小例子
- std::mutex 、std::lock_guard
- std::lock_guard 引起的思考
- c++ unique_lock与lock_guard的区别
- Thread lock_guard 和 unique_lock
- C++11中std::unique_lock的使用
- C++11中std::lock_guard的使用
- STD*_FILENO 和 std*的区别
- std::memset、std::memcpy和std::strcpy的区别
- TCP连接的状态详解以及故障排查
- web.xml里的Servlet和Filter示例
- 第一篇
- tarjan求强连通分量
- Java语言基础小结5
- std::lock_guard 和 std::unique_lock的区别
- Python笔记--函数式编程
- eclipse中使用Lombok
- jq文字垂直滚动/滚屏效果
- upD79F8513A(NEC)或upD78F0511A(NEC)之定时器TM50
- Oracle中rownum与order by排序问题
- bzoj3718: [PA2014]Parking
- MySQL导出csv文件并分割成多列
- [LeetCode]Longest Substring Without Repeating Characters