如何在读写器锁定中抢占所有读者?

时间:2012-06-15 18:40:18

标签: multithreading mutex semaphore data-synchronization readerwriterlock

enter image description here

以上是读者写作问题解决方案,其中作者优先于读者。

假设,最初有1000个读者开始执行代码来读取数据(假设读取数据代码很大,每个线程需要1秒),然后1个编写器尝试写入数据。所以作者必须等待1000名读者先完成(即1000秒)。

例如,在1个作者更新时间和许多读者阅读时间的应用程序中,作者必须等待1000秒,这是巨大的。

有没有解决方案,当作家试图写作时,所有读者都会被抢占,直到作家完成任务为止?

1 个答案:

答案 0 :(得分:0)

“抢占”究竟是什么意思?您不能将它们从CPU中取出,因为这不能解决问题。读者期望他们正在阅读的状态稳定。如果你“暂停”读者,采取写锁定,修改状态,释放锁定并恢复读者,他们将看到更改状态和故障。

读锁定的目的是确保读取器执行时数据不会改变。如果删除该属性,则此锁定策略不再有意义。