经典同步问题
读者写者问题
背景:有多个读者,也有多个写者。要保证其互斥性。要求应用对应的PV操作实现。
定义:
- P,V操作均为原子操作
- 原子操作是在执行的过程中,要么全做,要么全不做,不可被CPU打断
- P操作:简单说就是对一个信号量进行减一,如果小于零,表示当前无资源可用。等待
- V操作:简单说就是对一个信号量进行加一。
- 信号量:一定程度上表征资源(不可抢占)的数目。
假设题目:
有多个人正在写文件,而在同一个系统给下有多个用户在读文件。试用PV操作模拟,并保证之间的互斥性。
注:与上篇文章生产者消费者有不同,因为读者可以同时进入临界区。换句话说:
如果有写者,那就不允许有其他的写者与读者。
但是如果有读者,那么只允许没有写者。
先亮代码
因为有两种情况,所以需要两个信号量,一个为二值信号量,一个为多值信号量
初始化:
writeMutex =