Advertisement

读者-写者问题

阅读量:

该模型为解决互斥访问有限资源的竞争问题——如I/O设备等——提供了一个有用的框架。另一个著名的问题是读者-写者问题(由Courtois等人于1971年提出),它建立了数据库访问的基本模型。例如,在飞机订票系统中存在多个竞争进程试图读写数据库数据。多个进程同时进行读操作是可以接受的,并行执行多个read操作不会引发冲突或错误。然而,在这种情况下如果出现单个process进行write操作,则会导致所有其它process无法执行任何操作——无论是read还是write都无法进行。如何实现对读者与写者的有效同步?图2-47展示了一种解决方案

在该解法中

在此方案暗含了一个必须加以说明的前提条件。假设有第一个读者正在使用数据库时,则假设有第二个读者随后到来的情况也不会产生问题;然而当有第三个及以上的 readers 来到,则同样被允许。

现在假设一名写者抵达系统。由于该系统的访问权限设置为排他性访问模式,在允许一名写者进入数据库之前必须先对该写者进行阻塞或暂停操作以防止其他用户干扰数据一致性问题。一旦一名读者正在进行操作并处于可用状态,则可以让后续的读取操作继续进行下去。这种机制的效果是:只要存在持续不断的读取请求,则可以让这些读取操作随后依次进入系统;而该系统的write操作则始终处于阻塞状态直到所有的读取请求都被处理完毕。
当新的 readers 不断地向系统发送请求时例如每2秒

全部评论 (0)

还没有任何评论哟~