本论坛为只读模式,仅供查阅,不能注册新用户,不能发帖/回帖,有问题可发邮件 xikug.xp (^) gmail.com
楼主: KiCall

读写锁 [复制链接]

Rank: 2

发表于 2012-3-10 14:24:04 |显示全部楼层
eaglenet 发表于 2012-3-10 13:36
本来只是想给你个建议,让你能够继续优化你的实现,也想着少让你走些弯路。仅此而已. ...

写重入
这个到确实是需要改进的
比如一个线程已经获取了写锁。。。他如果再次获取写锁,目前的结构的话。。是会死锁的
需要改进下,这点。。。改成已经获取了读锁,写锁后,再获取同类型的锁不死锁。。。。
等我有时间把这点改进下

Rank: 2

发表于 2012-3-10 14:25:25 |显示全部楼层
KiCall 发表于 2012-3-10 14:20
我发的这个就是支持一个写,多个读的啊

目前只实现了读重入
比如一个线程已经获取了读锁
它再次获取读锁是没问题的
成对就好了

Rank: 1

发表于 2012-3-10 16:34:41 |显示全部楼层
看看

Rank: 3Rank: 3

发表于 2012-3-11 20:58:25 |显示全部楼层
看到锁蛋碎的路过...

Rank: 1

发表于 2012-3-12 20:11:00 |显示全部楼层
学习学习。。。。

Rank: 1

发表于 2012-3-13 12:12:59 |显示全部楼层
^_^ 看看先

Rank: 1

发表于 2012-3-13 19:59:31 |显示全部楼层
好东东,看一下

Rank: 1

发表于 2012-3-14 23:07:50 |显示全部楼层
围观一下~~读写者问题么?

Rank: 1

发表于 2012-3-15 13:14:31 |显示全部楼层
友情回复  查看内容 。。。。

Rank: 1

发表于 2012-3-15 16:20:20 |显示全部楼层
欣赏一下

Rank: 1

发表于 2012-3-16 10:27:27 |显示全部楼层
进来学习的

Rank: 1

发表于 2012-3-17 14:06:31 |显示全部楼层
先看看

Rank: 1

发表于 2012-3-18 00:43:29 |显示全部楼层
dddddddddddddddddddddddddddddd

Rank: 1

发表于 2012-3-19 18:40:01 |显示全部楼层

首先我觉得诸位没有必要对高并发使用读写锁产生争吵。

读写锁还是有必要的,尤其是数据量大,且多读少锁的时候。

譬如数据库内核,基本都有读写锁。



windows2008自带了读写锁。
还有ptheard也自带了。

我觉得可以直接使用之。

楼主的读写锁说句实话我不太敢用。写一个锁的细节其实是很多的。
你的这个读写锁貌似(没很仔细的看)不是很好的支持多线程并发读。

因为AcquireShareLock时要走2个锁。
在没有冲突的时候尽量使用lock-free。否则也影响可伸缩。









Rank: 1

发表于 2012-3-19 18:41:27 |显示全部楼层
我们以前有个同事实现过一个可递归的读写锁使用了TLS。
同时测试好了好久好久。。。我每次使用总是感觉有点心惊胆寒。

Rank: 1

发表于 2012-3-19 18:45:31 |显示全部楼层
关于多读少写锁,如果保护的数据量内容比较小的话,可以参考 Hazard pointer。

Rank: 1

发表于 2012-3-20 13:00:04 |显示全部楼层
学习学习

Rank: 1

发表于 2012-3-20 17:16:47 |显示全部楼层
隐藏的啥?

Rank: 1

发表于 2012-3-24 00:36:11 |显示全部楼层
学习了。

Rank: 1

发表于 2012-3-26 09:58:10 |显示全部楼层
学习~~~~~
您需要登录后才可以回帖 登录 | 立即加入

Archiver|手机版|第8个男人 - 论坛为只读模式,仅供查阅

GMT+8, 2019-1-22 09:51 , Processed in 0.043233 second(s), 7 queries .

Design by pvo.cn

© 2011 Pvo Inc.

回顶部