自解锁lock_guard
来源:互联网 发布:收到短信淘宝内部qq群 编辑:程序博客网 时间:2024/06/06 16:12
今天遇到lock_guard,大概学习了一下,先贴出源码。
// LOCKS
template<class _Mutex>class lock_guard
{ // class with destructor that unlocks mutex
public:
typedef _Mutex mutex_type;
explicit lock_guard(_Mutex& _Mtx)
: _MyMutex(_Mtx)
{ // construct and lock
_MyMutex.lock();
}
lock_guard(_Mutex& _Mtx, adopt_lock_t)
: _MyMutex(_Mtx)
{ // construct but don't lock
}
~lock_guard() _NOEXCEPT
{ // unlock
_MyMutex.unlock();
}
#if _HAS_FUNCTION_DELETE
lock_guard(const lock_guard&) = delete;
lock_guard& operator=(const lock_guard&) = delete;
#else /* _HAS_FUNCTION_DELETE */
private:
lock_guard(const lock_guard&); // not defined
lock_guard& operator=(const lock_guard&);// not defined
#endif /* _HAS_FUNCTION_DELETE */
private:
_Mutex& _MyMutex;
};
std :: lock_guard
标题中定义
template < class Mutex > <mutex>
class lock_guard ;
该类lock_guard
是一个互斥包装,它提供了一个方便的RAII风格的机制,用于在作用域的持续时间内拥有互斥体。
当lock_guard
创建对象时,它会尝试获取给定的互斥体的所有权。当控件离开lock_guard
创建对象的范围时,lock_guard
被破坏并释放互斥体。
该lock_guard
班是不可复制的。
模板参数
互斥-要锁定的互斥体的类型。该类型必须符合BasicLockable
要求会员类型
会员类型定义mutex_type
互斥会员功能
(构造函数)
(public member function)
(析构函数)
(public member function)
运算符=
[删除]
(public member function)
扣除指南(自C ++ 17起)
简单的说,它是与mutex配合使用,把锁放到lock_guard中时,mutex自动上锁,lock_guard析构时,同时把mutex解锁。
std::lock_guard是一个局部变量,创建时,g_i_mutex 上锁,析构时g_i_mutex解锁。这个功能在函数体比较长,尤其是存在多个分支的时候很有用。
阅读全文
0 0
- 自解锁lock_guard
- C++11 mutex方便的自解锁lock_guard
- C++11 mutex方便的自解锁lock_guard
- 线程自动加锁与自动解锁:lock_guard & unique_lock
- lock_guard小解
- boost::lock_guard 线程同步
- Thread lock_guard 和 unique_lock
- std::mutex 、std::lock_guard
- 解锁
- 解锁
- 解锁
- Android开发开机自启动和屏幕解锁
- 为oracle自带的scott用户解锁
- android开机自启动后自动解锁进入
- iOS自iOS8.0出的指纹解锁api
- boost::unique_lock vs boost::lock_guard
- lock_guard和unique_lock的区别
- std::lock_guard and std::unique_lock
- 图 邻接矩阵 深度优先遍历 广度优先遍历
- 45-Jump Game II
- 二叉堆的一些基本操作(未完待续)
- Spatial pyramid pooling (SPP)-net (空间金字塔池化)笔记
- 20170622_C++的继承与派生1
- 自解锁lock_guard
- 敏捷测试理论以及实践
- 46-Permuation
- jlink/stlink与ice
- 限制对比度自适应直方图均衡化算法原理、实现及效果
- 软件版本 —— Alpha、Beta、RC版本的区别
- 47-Permuation II
- Python日期格式化
- hint详解