C++使用构造和析构函数管理同步锁的一种方法Guard
来源:互联网 发布:dc电视剧 知乎 编辑:程序博客网 时间:2024/05/21 19:31
在C++中,通过提供构造函数、析构函数来对处理资源的获取、释放。
通过C++的这种机制,我们可以很方便地处理C++中的加锁同步机制。把锁对象作为Guard对象的一个成员(m_lock),然后在Guard对象的构造中对m_lock进行加锁:m_lock.acquire(),在Guard对象的析构函数中进行解锁:m_lock.release()。先给出代码实例如下:
template <class T>
class Guard
{
public :
Guard(const T & lock);
virtual ~Guard();
private:
const T & m_lock;
};
template <class T>
Guard<T>::Guard(const T & lock) :
m_lock(lock)
{
m_lock.acquire();
}
template <class T>
Guard<T>::~Guard()
{
m_lock.release();
}
我们可以在应用程序中这样使用它:
void testFunc(.....)
{
Guard<MutexWrapper> guard(mutex);
...
}
在刚进入函数testFun(...),创建guard对象,并自动对mutex进行加锁,对特定数据(resource)进行保护。当应用离开testFunc函数模块时,根据guard对象的作用域和生命周期,此时guard对象的析构函数将被调用,因此将自动对mutex进行解锁。在此之后应用的其他线程将可以访问以前被mutex进行保护起来的资源。
利用上面的方法,我们可以包对资源的同步访问和访问控制交给C++的编译器,而不需要进行人工干预,从而减轻应用开发人员的工作负担。
- C++使用构造和析构函数管理同步锁的一种方法Guard
- C++同步锁管理的一种方法
- C/C++——构造函数、复制构造函数和析构函数的执行时刻
- [c++]派生类的构造函数和析构函数
- C++:类的构造函数和析构函数
- c++---派生类的构造函数和析构函数
- 构造函数和析构函数【c++】
- [c++]构造函数和析构函数
- 【C#】构造函数和析构函数
- 【C++】构造函数和析构函数
- 【C++】构造函数和析构函数
- C++:构造函数和析构函数
- C++一种有意思的构造析构函数调用现象
- C++迭代器使用流和标准函数的一种方法
- 构造函数和析构函数的使用原因
- 构造函数和析构函数的使用
- 【C/C++】实现一个string类的构造函数、析构函数和赋值函数
- PHP构造方法和析构函数
- [疯狂的想法]来算算工资吧
- Groovy和Grails介绍(2)
- 设计模式关于C++的书为何那么少呢?
- [疯狂的想法] 虐待你的CPU,打开任务管理器,看看你的CPU吧
- 也谈《火车运煤》问题
- C++使用构造和析构函数管理同步锁的一种方法Guard
- Four steps of gcc
- 四、Hibernate多对一关联有关系(单向关联)
- 找小猴子,没对么?不知道,小女生给出的问题.小美女哦
- 单元测试、集成测试、系统测试
- MD5 与密码
- http://jqueryui.com/demos/
- SQL中运用游标循环结果集
- 一段通用的自删除代码