【发布时间】:2012-02-21 17:40:21
【问题描述】:
我有一个作业问题,我必须实现读写器锁。请注意,我不是在寻找/要求代码。我希望了解读写锁的行为,这将有助于我最终确定实现细节。
假设获取锁的请求遵循以下顺序:R W R W R W R W.. 为了防止饥饿,我们应该以相同的顺序处理请求吗?如果我选择跳过写请求(从而给予读者更高的偏好),我如何确保写线程不会饿死?
如果给作者更高的偏好,我认为读者线程有可能会饿死。
我认为我目前的计划适用于 RRRRWRRRRWWWRRRRR、WWWWWRRRRWRRRR、RRRRRRRR、WWWWWW、RWRRR、WRWWWW 等序列。
还有其他我没有考虑的情况吗? - 我知道这是一个很难回答的问题,尤其是。因为我没有透露任何细节,也没有列举我考虑的所有场景。请多多包涵!
【问题讨论】:
-
在理想的世界中,您应该为所有比最长的正在进行的读取更短的传入读取提供服务。您无法预测,但是您可以采用某种动态方法来适应程序的行为。