有关读写锁
浏览:1889次 出处信息
为什么需要用读写锁。
读写锁用于single thread写,多个thread读的情况。在没有发明读写锁之前,我们当然可以对所有的thread使用Mutex来控制资源访问。但是在这个场景中,两个thread读取数据没有必要进行互斥,读写锁应运而生,是的这种场景下所有拿到读锁的thread可以并行执行。
读写锁的实现。
实现:在多核系统中读写锁的实现一般是基于SpinLock,Linux就是如此。
抢占策略:写优先还是读优先。这个都可以,我觉得写优先比较好一点,因为一般此类应用读thread占多数,如果读优先则写锁线程可能被饿死。
读锁的upgrade和downgrade。
有的时候在读到一半的时候,可能突然又要想写点什么东西,此时不能直接拿写锁,一定会死锁。只能关掉读锁来重新竞争写锁。这时候可以引入读锁的upgrade来使其直接升级为写锁。这个时候就涉及到三个优先级:写优先、读优先还是升级优先,具体那个优先可以视实际的需求而定。我觉得“升级>写>读”这个顺序看起来比较顺眼。
QQ技术交流群:445447336,欢迎加入!
扫一扫订阅我的微信号:IT技术博客大学习
扫一扫订阅我的微信号:IT技术博客大学习
<< 前一篇:OpenTSDB监控系统的研究和介绍
后一篇:诡异提交失败问题追查 >>
文章信息
- 作者:appleleaf 来源: kernelchina blogs
- 标签: 读写锁
- 发布时间:2012-07-07 23:35:04
近3天十大热文
- [66] Go Reflect 性能
- [65] Oracle MTS模式下 进程地址与会话信
- [64] 如何拿下简短的域名
- [59] android 开发入门
- [59] IOS安全–浅谈关于IOS加固的几种方法
- [58] 图书馆的世界纪录
- [58] 【社会化设计】自我(self)部分――欢迎区
- [53] 视觉调整-设计师 vs. 逻辑
- [47] 界面设计速成
- [46] 读书笔记-壹百度:百度十年千倍的29条法则