-
一 单生产消费问题
-
1、思路
- 主要问题是互斥、两对同步问题。互斥的是互斥访问临界区,同步的是二者产生的变化都对对方有影响。
-
2、设置变量(三个变量)
- ① 互斥访问临界区变量LJ = 1
- ② 空闲缓冲区变量KX = n
- 开始为资源数量n,记录当前临界区的空闲块块还有多少。
- ③ 满缓冲区变量CP = 0
- 开始为0,记录当前产品的数量,也就是非空闲的块块数量。
-
3、过程
-
4、注意事项
- 不能更改P操作的顺序,访问空闲区的P操作必须在互斥临界区P操作之前。否则会生产和消费互相循环等待,等待对方唤醒自己,产生“死锁”。
- 相反V操作可以交换,因为都是对资源加1,谁在前面加都可以。
- 虽说很多代码都可以放到临界区,但是不重要冗余的代码放到临界区,会让处理速度变慢,降低系统的并发度。
-
二 多生产消费问题
-
1、思路
-
2、设置变量
- ①互斥访问临界区的变量 mutex = 1
- ②盘子数量的变量 plate = 1
- ③盘子中苹果的变量 apple = 0
- ④盘子中橘子的变量 orange = 0
-
3、过程
-
4、注意事项
- 可以不设置专门的互斥变量mutex,也不会出现多个进程同时访问盘子的现象。但是这是特殊情况,做题的时候直接全部加上,一定能保证互斥访问。
- 如果盘子数量为2,就会有两个进程进入盘子,就可能会出现数据相互覆盖的问题。
相关文章:
-
2021-11-06
-
2022-12-23
-
2021-07-16
-
2022-12-23
-
2022-01-22
-
2021-06-02
-
2022-12-23
猜你喜欢
-
2021-05-29
-
2021-12-19
-
2022-12-23
-
2022-12-23
-
2021-08-19
-
2021-09-01
-
2021-07-20
相关资源
-
下载
2023-03-24
-
下载
2023-04-06
-
下载
2022-12-29
-
下载
2023-01-09