【发布时间】:2010-08-19 14:50:07
【问题描述】:
可以说,我有一个读写器系统,其中读写器同时运行。 'a' 和 'b' 是两个共享变量,它们是相互关联的,所以对它们的修改需要原子操作。
读写器系统可以是以下类型:
- rr
- ww
- 读写
- r-ww
- rr-w
- rr-ww
在哪里
[ r : 单读
rr:多个阅读器
w : 单一作者
ww: 多个作者]
现在,我们可以有一个读取器的读取方法和一个写入器的写入方法,如下所示。我已经按照系统类型编写了它们。
-
rr
read_method { read a; read b; } -
ww
write_method { lock(m); write a; write b; unlock(m); } r-w
- r-ww
- rr-w
-
rr-ww
read_method { lock(m); read a; read b; unlock(m); } write_method { lock(m); write a; write b; unlock(m); }
对于多阅读器系统,共享变量访问不需要是原子的。
对于多写入器系统,共享变量访问需要是原子的,所以用'm'锁定。
但是,对于系统类型 3 到 6,我的 read_method 和 write_method 是否正确?我该如何改进?
此致
斯里尼瓦斯纳亚克
【问题讨论】:
-
这是作业/练习吗? RW 锁有点棘手,但大多数环境都有您应该使用的内置实现。但是,如果您正在做练习,建议您调用图书馆并没有帮助。
-
这不是作业。大多数书籍要么讨论其中的一种或两种系统类型。我想要一个集合,对于每种系统,我们都可以了解理论上的事物是如何工作的。
标签: readerwriterlock