在Reader-writer问题中,如果Writer正在写入某些数据,那么其他Reader可以同时读取数据吗?
如果没有,这是操作系统-加尔文中存在的代码如何处理上述情况
作家的过程:
do {
wait(rw mutex);
. . ./* writing is performed */
signal(rw mutex);
} while (true);
阅读者的过程:
do {
wait(mutex);
read count++;
if (read count == 1)
wait(rw mutex);
signal(mutex);
. . ./* reading is performed */
wait(mutex);
read count--;
if (read count == 0)
signal(rw mutex);
signal(mutex);
} while (true);
答案 0 :(得分:1)
第一个读取器使用信号量rw互斥量 关键部分和退出关键的最后一个读者 部分。
原因是,当第一批读者进入关键 部分,作者被阻止访问资源。
现在只有新读者可以访问该资源。
类似地,当最后一个读者退出关键部分时,它
使用rw互斥信号量向写作者发信号,因为有
现在零读者和作家都有机会访问
资源。