读写锁是数据库中很常见的锁,又叫共享-排他锁,S锁和X锁。读写锁在大量读少量写的情况下有很高的效率优势。
读写锁是基于普通的互斥锁构建出来的更复杂的锁,它有两个基本特点:
1. 当任一线程持有读锁或写锁时,不允许其他线程再持有写锁
2. 当任一线程持有写锁时,不允许其他线程再持有读锁
也就是说,写锁是排他的,只要有一个线程持有写锁,就不允许其他线程再上锁。读锁是共享的,可以有多个线...
分类:
其他好文 时间:
2014-11-03 13:08:32
阅读次数:
256
上一篇文章中主要讲解了Linux环境下多线程的基本概念和特性,本文将说明Linux环境下多线程的同步方式。 在《UNIX环境高级编程》第二版的“第11章 线程”中,提到了三种基本的同步机制:互斥、读写锁、条件变量。下面分别针对这三种机制进行说明:一、线程互斥 互斥意味着具有“排它性”,即两个...
分类:
编程语言 时间:
2014-10-30 19:06:50
阅读次数:
286
以下内容来自:http://blog.csdn.net/morewindows/article/details/7650574 前面我们使用事件和一个记录读者个数的变量来解决读者写者问题。问题虽然得到了解决,但代码有点复杂。本篇将介绍一种新方法——读写锁SRWLock来解决这一问题。读写锁在对资源....
分类:
编程语言 时间:
2014-10-27 12:32:22
阅读次数:
328
字符输入问题,刚开始没有考虑到shift+字符输入和当前大小写锁定状态相反状态字符只需要两步的问题。
状态转移方程:dp1[i]表示输入完第i个字符后为大写状态需要的步数 dp2[i]表示输入完第i个字符后为小写状态所需要的步数
如果第i个字符为小写:
dp1[i]=min(dp1[i-1]+2,dp2[i-1]+2);
dp2[i]=min(dp1[i-1]+2,dp2[i-1]+1);...
分类:
其他好文 时间:
2014-10-19 18:39:15
阅读次数:
198
1 一个资源同时可以有多个读写,但是只能有一个写锁2 用flag代表锁的状态,#define un_lock 0#define r_lock1 //上一把读锁加一个r_lock#define w_lock -1伪代码1 LOCK_Rpthread_lock(resource.mutex)while(...
分类:
其他好文 时间:
2014-10-19 12:51:23
阅读次数:
150
线程同步的方式包括:互斥锁、读写锁、条件变量、信号量和令牌。互斥锁和读写锁: 提供对临界资源的保护,当多线程试图访问临界资源时,都必须通过获取锁的方式来访问临界资源。(临界资源:是被多线程共享的资源)当读写线程获取锁的频率 差别不大时,一般采用互斥锁,如果读线程访问临界资源的频率大于写线程,这个时候...
分类:
编程语言 时间:
2014-10-19 01:14:37
阅读次数:
357
未授权读取也称为读未提交(Read Uncommitted):允许脏读取,但不允许更新丢失。如果一个事务已经开始写数据,则另外一个事务则不允许同时进行写操作,但允许其他事务读此行数据。该隔离级别可以通过“排他写锁”实现。授权读取也称为读提交(Read Committed):允许不可重复读取,但不允许...
分类:
其他好文 时间:
2014-10-18 23:51:53
阅读次数:
304
SQLite 随机取n行的方法SQLite多线程写锁文件解决方案sqlite和sql server语法上的一些区别sqlite编程插入标示字段,获得新idC# SQLiteHelper类似SqlHelper类实现存取Sqlite数据库在asp.net web 程序中使用Sqlite数据库出处:htt...
分类:
数据库 时间:
2014-10-17 20:15:22
阅读次数:
172
IPC是进程间通信的简称.传统上该术语描述的是运行在某个操作系统之上的不同进程间消息传递的不同方式.我们讨论分为四个领域:消息传递(管道,FIFO,消息队列(system v消息队列,posix消息队列));同步(互斥锁,条件变量,读写锁,信号灯)共享内存区(匿名共享内存区,有名共享内存区)过程调用...
分类:
系统相关 时间:
2014-10-11 19:06:56
阅读次数:
237
页级:引擎 BDB。表级:引擎 MyISAM , 理解为锁住整个表,可以同时读,写不行行级:引擎 INNODB , 单独的一行记录加锁表级,直接锁定整张表,在你锁定期间,其它进程无法对该表进行写操作。如果你是写锁,则其它进程则读也不允许行级,,仅对指定的记录进行加锁,这样其它进程还是可以对同一个表中...
分类:
数据库 时间:
2014-10-10 23:21:24
阅读次数:
430