mysql lock scope_scope_lock模式详解
在《Unix下的线程互斥量》一文中我们使用Thread_Mutex来保护线程共享资源,但如果互斥体上锁之后没有解锁就会发生死锁。这是一个很普遍的错误,我们采用Scope Lock模式,我们构造对象Scope_Mutex,其中构造函数对互斥体加锁,析构函数对互斥体解锁。C++保证了析构函数一定会被调用,所以即使是有异常抛出,互斥体也总是会被正确的解锁。下面给出Scope_Mutex的具体实现:
class Scope_Mutex
{
private:
Thread_Mutex mMutex;
Scope_Mutex(const Scope_Mutex&);
Scope_Mutex& operator=(const Scope_Mutex&);
public:
// 构造时对互斥量进行加锁
explicit Scope_Mutex(Thread_Mutex &m) : mMutex(m)
{
mMutex.lock();
}
// 析构时对互斥量进行解锁
~Scope_Mutex()
{
mMutex.unlock();
}
};
class Thread_Mutex {
public:
/*
* 构造函数
*/
Thread_Mutex() {
assert(pthread_mutex_init(&_mutex, NULL) == 0);
}
/*
* 析造函数
*/
~Thread_Mutex() {
//销毁互斥量
pthread_mutex_destroy(&_mutex);
}
/*
* 加锁
*/
void lock ()
{
int error;
//锁住互斥量
error = pthread_mutex_lock(&_mutex);
if (error != 0)
{
errno = error;
perror("Mutex lock");
abort();
}
}
/*
* 解锁
*/
void unlock()
{
int error;
//解锁互斥量
error = pthread_mutex_unlock(&_mutex);
if (error != 0)
{
errno = error;
perror("Mutex unlock");
abort();
}
}
protected:
pthread_mutex_t _mutex;
};
mysql lock scope_scope_lock模式详解相关推荐
- mysql索引 include_MySql索引详解
什么是索引? 1.索引 索引是表的目录,在查找内容之前可以先在目录中查找索引位置,以此快速定位查询数据.对于索引,会保存在额外的文件中. 2.索引,是数据库中专门用于帮助用户快速查询数据的一种数据结构 ...
- Android Doze and App Standby模式详解
Android Doze and App Standby模式详解 来源:腾云阁 https://www.qcloud.com/community Optimizing for Doze and Ap ...
- mysql配置文件my.cnf详解
mysql配置文件my.cnf详解 basedir = path 使用给定目录作为根目录(安装目录). character-sets-dir = path 给出存放着字符集的目录. datadir = ...
- 转:mysql show processlist命令 详解
转:mysql show processlist命令 详解 processlist 命令的输出结果显示了有哪些线程在运行,可以帮助识别出有问题的查询语句,两种方式使用这个命令. 1. 进 ...
- MySQL UUID函数的详解
文章来源:http://www.mysqlops.com/2011/03/01/mysql-uuid.html MySQL UUID函数的详解 MySQL中可以有二类用于生成唯一值性质的工具:UUID ...
- MySQL权限授权认证详解
MySQL权限授权认证详解 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.MySQL权限系统介绍 1>.权限系统的作用是授予来自某个主机的某个用户可以查询.插入.修改.删 ...
- Navicat的mysql远程登录方法详解
Navicat的mysql远程登录方法详解 工具和前提 远程连接方法 疑惑问题 报错汇总 关闭并删除用户 引用 工具和前提 1.均在Navicat上面进行操作: 2.Navicat15的版本,本地数据 ...
- MySQL操作mysqldump命令详解
MySQL操作mysqldump命令详解 基本命令: # 数据库备份-->mysqldump命令默认做锁表操作 mysqldump -uroot -ppassword --all-databas ...
- Android M新特性Doze and App Standby模式详解
转载请标明出处:http://blog.csdn.net/xx326664162/article/details/52312122 文章出自:薛瑄的博客 你也可以查看我的其他同类文章,也会让你有一定的 ...
最新文章
- Mobile3DRecon:手机上的实时单眼3D重建
- POJ 1789 Truck History
- 腾讯实时音视频开发应用大赛火热开赛,两大主题、60万奖品,等你来拿!
- 信息表示和处理 from computer system chapter 2
- 谭浩强课后题之----水仙花数
- Android4开发入门经典 之 第七部分:数据存储
- qt自定义窗口添加父窗口后,显示不出来
- MSSQL-最佳实践-如何监控备份还原进度
- 与国际接轨,中国人慎用这些汉字取名(最后一段对话,笑到喷饭!!)
- 插槽的使用_思维导图
- (转)Hibernate快速入门
- python学习笔记 - 函数: 传参列表副本(不改变列表本身)
- 计算机等级考试四级--软件工程
- COFs单体—醛类单体/氨基单体/硼酸系列
- love2d教程10--粒子效果
- eclipse报错:The project was not built due to “Could not delete...”. Fix the problem...
- mtd-utils交叉编译
- Chrome与Chromedriver版本对应表(最新)【附下载链接】
- ESB 企业服务总线基本内容概述
- JWT(Golang)