首页
Web开发
Windows程序
编程语言
数据库
移动开发
系统相关
微信
其他好文
会员
首页
>
其他好文
> 详细
利用条件信号量设计读写锁
时间:
2014-10-19 12:51:23
阅读:
150
评论:
0
收藏:
0
[点我收藏+]
标签:
sp
div
on
代码
ad
ef
bs
as
res
1 一个资源同时可以有多个读写,但是只能有一个写锁
2 用flag代表锁的状态,
#define un_lock 0
#define r_lock 1 //上一把读锁加一个r_lock
#define w_lock -1
伪代码
1 LOCK_R
pthread_lock(resource.mutex)
while(resource.flag < 0 ) //说明当前资源为写锁
pthread_cond_wait(resource.cond, resource.mutex)
//说明当前资源为无锁或者读锁,再加一把读锁
resource.flag+=r_lock
pthread_unlock(resource.mutex)
2 UNLOCK_R
pthread_lock(resource.mutex)
//减去一把读锁
resource.flag-=r_lock
if (resource.flag == 0) //说明当前资源为写锁
pthread_cond_broadcast(resource.cond) //这个操作激活所有上写锁的线程
pthread_unlock(resource.mutex)
3 LOCK_W
pthread_lock(resource.mutex)
while(resource.flag != 0 ) //说明当前资源为写锁或者读锁
pthread_cond_wait(resource.cond, resource.mutex)
//说明当前资源为无锁
resource.flag=w_lock
pthread_unlock(resource.mutex)
4 UNLOCK_W
pthread_lock(resource.mutex)
//减去写锁
resource.flag=w_lock
pthread_cond_broadcast(resource.cond) //这个操作激活所有上写锁和读锁的线程
pthread_unlock(resource.mutex)
利用条件信号量设计读写锁
标签:
sp
div
on
代码
ad
ef
bs
as
res
原文地址:http://www.cnblogs.com/hdflzh/p/4034448.html
踩
(
0
)
赞
(
0
)
举报
评论
一句话评论(
0
)
登录后才能评论!
分享档案
更多>
2021年07月29日 (22)
2021年07月28日 (40)
2021年07月27日 (32)
2021年07月26日 (79)
2021年07月23日 (29)
2021年07月22日 (30)
2021年07月21日 (42)
2021年07月20日 (16)
2021年07月19日 (90)
2021年07月16日 (35)
周排行
更多
分布式事务
2021-07-29
OpenStack云平台命令行登录账户
2021-07-29
getLastRowNum()与getLastCellNum()/getPhysicalNumberOfRows()与getPhysicalNumberOfCells()
2021-07-29
【K8s概念】CSI 卷克隆
2021-07-29
vue3.0使用ant-design-vue进行按需加载原来这么简单
2021-07-29
stack栈
2021-07-29
抽奖动画 - 大转盘抽奖
2021-07-29
PPT写作技巧
2021-07-29
003-核心技术-IO模型-NIO-基于NIO群聊示例
2021-07-29
Bootstrap组件2
2021-07-29
友情链接
兰亭集智
国之画
百度统计
站长统计
阿里云
chrome插件
新版天听网
关于我们
-
联系我们
-
留言反馈
© 2014
mamicode.com
版权所有 联系我们:gaon5@hotmail.com
迷上了代码!