Ex6 信号量与PV操作习题

信号量与PV操作习题

读者写者问题

v1-读者优先策略

image-20240524100405216

rmutex的理解

  • 可以理解为更新临界资源readcount的坑位,同一时间只允许一个reader蹲在那里更新readcount

理发师问题

一个理发师、一把理发椅、等候区容量N

理发师:等候区有顾客就理发,没顾客睡觉

顾客:等候区不满就进等候区,在等候区如果理发师睡觉就叫醒;等候区满就不理发了

重要思想

协同信号量: waiting <-> customers

  • waiting变量和customers信号量是一对协同量,二者意义相同,数值也相同(除了customer可能为-1)。
  • 所以要用mutex信号量去保证二者在有顾客的时候是同步变化的,这样去理解mutex就容易的多了
  • 为什么?因为我们要判断if(waiting<CHAIRS),假如没有waiting,我们就得判断if(customers<CHAIRS),但是用户代码直接访问信号量的操作是不被允许的