信号量实现读写锁
来源:互联网 发布:中国云计算大会 刘鹏 编辑:程序博客网 时间:2024/05/16 09:48
/*
* 一般的读写锁:
* 一般的读写锁都是一开始对锁分配MAX_RESOURCE个资源,其中写操作的时候会一次性占用
* MAX_RESOURCE个资源,而读操作的时候就只会占用一个资源。这样子会出现一个问题就是
* 如果在当前资源的数目不为MAX_RESOURCE的时候,那么总是不能进行写操作,只能是进行
* 读操作,如果不停的有读操作的话,那么就无法进行写操作,那么就是出现俗称的"写饿死"
* 状态,这也是读优先锁的问题所在。
*
* 写优先读写锁:
* 先说明一下,写优先读写锁会有两把锁的存在:互斥锁(A)、资源锁(B)
* 在进行占用资源的时候:
*
* 读操作:
* 会先判断A是否上锁了,是的话等待直到解锁为止,若没有上锁则对B进行加锁(锁一个资源给)操作。
*
* 写操作:
* 会判断A是否上锁,是的话等待直到解锁为止,若没有则对A进行加锁操作,然后对B进行加锁
* 操作(锁MAX_RESOURCE个资源)操作
*
* 具体实现原理:
* 有一个值得去注意的地方:
* 就是怎么能够实现判断互斥锁是否被占用,读操作是不用锁互斥锁的,只是要判断互斥锁是否
* 被锁住了。那么就不能用一般的semop增减资源操作了。在这里的话可以取巧的使用semop(0)即
* 对指定的信号量占用0个资源的操作(如果占用0个资源,这个操作要等待到资源给为0时才返回)。
* 这样我们就可以运用一对原子操作:
* 1、semop[0] :op = 0;
* 2、semop[1] :op = -1;
* 将这两个操作都放在一个数组里,就可以实现原子的先判断,再操作的效果了
*
* */
- 信号量实现读写锁
- 用信号量实现读写锁
- 张氏读写锁,c++信号量实现
- Linux内核读写信号量实现
- windows信号量实现读写同步
- 锁(二) 信号量 读写信号量 互斥体
- 读写信号量,读写锁,顺序锁
- linux信号量实现线程读写同步
- 读写信号量
- 大话Linux内核中锁机制之信号量、读写信号量
- 原子操作、信号量、读写信号量和自旋锁
- 原子操作、信号量、读写信号量和自旋锁
- Linux内核中锁机制之信号量、读写信号量
- 可睡眠锁 互斥量、信号量、读写信号量、完成变量
- 大话Linux内核中锁机制之信号量、读写信号量
- 读写锁的几种实现方式-互斥量,信号量,条件变量
- 信号量和读写锁的区别
- 利用条件信号量设计读写锁
- java学习1
- Android颜色值表大全
- android:autoLink和Linkify
- 三位数之和
- poj 2184(dp变形,进一步加深01背包)
- 信号量实现读写锁
- GLSL 在OpenGL中向shader传递信息
- jquery中选择块并改变属性值
- 程序猿你是否有这些理解误区?
- linux进程调度 - 优先级处理
- KEIL Code RO-data RW-data ZI-data
- Ubuntu64位下Android开发时R文件不能生成的原因
- AD查询1000条限制和解决方案
- linux下解压命令大全