老师,假设使用管程和条件变量实现,符不符合题目要求利用信号量实现的范畴? 答: 从概念上来说,管程与信号量是不同的。通常在题目中会明确指出要求。
关于写者优先部分,课间中给出的伪代码为什么要在P(rsem)前P(z) 我在wiki上找到的伪码不需要这步操作。我觉得P(z)和P(rsem)有重复的感
觉,没有必要把……请您解释下~ 谢谢! 答: 对于写者优先的读者-写者问题的解法的解释: 对写者优先的实现在William Stallings的第五版教材的表5.5中有一个比较清楚的描述。即把所有可能的情况分成4种情况:1)只有读者;2)只有写者;3)同时有读者和写者,且当前正在读;4)同时有读者和写者,且当前正在写。有了这个分类,再来理解下面的解释会容易一些。 如果没有信号量z,在下面情况时会有大量的读者等待在信号量rsem上。这种情况是,当前正在进行写操作,随后有大量读者到达。 随后写者们完成了最后一个写操作,可以进行读操作了。于是所有等待在信号量rsem上的读者开始逐一获得信号量rsem,然后申请信号量x,检查自己是否是第一个读者,确认不是第一个后开始读操作。如果这时的读者的数目很多,这个过程需要一定的时间。 设想这时又有一个写者到达,它就没有办法赶在正在逐一申请信号量x的读者前面进行写操作了。 如果这时有信号量z的作用,这个写者就可以在第一时间挡住正在获得信号量rsem的读者,最大限度地实现写者优先。