桌子上有一个盘子,每次只能放一个水果.爸爸专门向盘子里放苹果,妈妈专门向盘子里放橘子,一个儿子专门等吃盘子中的橘子,一个女儿专门等吃盘子中的苹果.用信号量实现他们间的同步机制.
来源:互联网 发布:windows驱动程序包很多 编辑:程序博客网 时间:2024/04/28 18:34
题目: 桌子上有一个盘子,每次只能放一个水果.爸爸专门向盘子里放苹果,妈妈专门向盘子里放橘子,一个儿子专门等吃盘子中的橘子,一个女儿专门等吃盘子中的苹果.用信号量实现他们间的同步机制.
解:
1:盘子是临界资源.要实施互斥. 用信号量 f 表示.
2:苹果用 a 表示. 橘子用 o 表示.
3:盘子的状态(空,或者满) 用 e 表示.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
semphore: f=
1
, e=
1
, a=
0
, o =
0
;
ProcessDad(){
semWait(e);
//盘子中是否空
semWait(f);
//是否有人在用盘子,f保证盘子被独占。
setApple();
semSignal(a);
//通知放了一个苹果
semSignal(f);
}
ProcessMom(){
semWait(e);
semWait(f);
setOrange();
semSignal(o);
semSignal(f);
}
ProcessSon(){
semWait(o);
//是否有橘子
semWait(f);
//是否有人在用盘子
eatOrange();
semSignal(e);
//通知盘子为空
semSignal(f);
}
ProcessDaughter(){
semWait(a);
semWait(f);
eatApple();
semSignal(e);
semSignal(f);
}
0 0
- 桌子上有一个盘子,每次只能放一个水果.爸爸专门向盘子里放苹果,妈妈专门向盘子里放橘子,一个儿子专门等吃盘子中的橘子,一个女儿专门等吃盘子中的苹果.用信号量实现他们间的同步机制.
- 在PV操作中会有一个经典的例子就是爸爸妈妈儿子女儿吃水果问题,爸爸妈妈向盘子里放入水果,儿子女儿向盘子取水果。然而爸爸只向盘子放苹果,妈妈只向盘子放橘子,女儿只能吃苹果,儿子只能吃橘子。并且盘子里只能
- 【C++】m个苹果放在N个盘子里
- k个盘子放n个苹果
- 把n个同样的苹果放在m个同样的盘子里
- 把M个同样的苹果放在N个同样的盘子里
- 算法分析——N个苹果放在N个盘子里的问题
- m个相同苹果放的n个相同盘子中的算法
- 把M个同样的苹果放在N个同样的盘子里,允许有的盘子空着不放,问共有多少种不同的分法?
- 把M个同样的苹果放在N个同样的盘子里,允许有的盘子空着不放,问共有多少种不同的分法?
- 【放苹果】m个苹果放到n个盘子中
- n个盘子放m个苹果(动态规划)
- poj 1664 递推(盘子放苹果)
- M个苹果放在N个盘子
- 动态规划与递归算法 M苹果放N盘子
- poj 1664 放苹果 将m个相同的苹果放进n个相同的盘子中,盘子允许空,有多少种方法
- C/C++编程题1-放苹果,将m个相同的苹果放进n个相同的盘子中,盘子允许空,有多少种方法
- 转:poj 1664 放苹果 将m个相同的苹果放进n个相同的盘子中,盘子允许空,有多少种方法
- [代码实例][Linux系统编程]列出目录下的文件和子目录
- Ubuntu 14.04.4 Android环境配置问题汇总
- 从网页监听Android设备的返回键
- Springmvc 与 MyBatis的整合(四)service
- 集成TerichDB的SSDB性能测试
- 桌子上有一个盘子,每次只能放一个水果.爸爸专门向盘子里放苹果,妈妈专门向盘子里放橘子,一个儿子专门等吃盘子中的橘子,一个女儿专门等吃盘子中的苹果.用信号量实现他们间的同步机制.
- 超越之MongDB系列教程(一) MongDB的特点
- 集成 TerichDB 的 MongoDB 性能测试
- RxJava zip操作符在Android中的实际使用场景
- Eclipse中web项目部署至Tomcat步骤
- 信与信封问题
- Linux安装php环境
- CBF中for循环变矩阵乘法的思想(arrayfire)--复数矩阵
- css设置元素如何在div边框中上下垂直居中