生产者与消费者问题
-
PV操作是用来操作信号量的。
-
P:等待——wait——减法作用——阻塞作用
-
V:释放——signal——加法作用——唤醒作用
-
S.value > 0
:有空闲CPU;S.value = 0
:CPU刚好用完;S.value < 0
:进程等待;-
P操作
void wait(S) { S.value--; if (S.value < 0) { 加入阻塞队列; } }
-
V操作
void signal(S) { S.value++; if (S.value <= 0) { 唤醒阻塞队列第一个进程; } }
-
-
-
解题思路:
1.画图理解题目 2.判断题目类型 3.分析进程数目,填写进程模板 4.补充基本代码 5.补充P,V代码 6.调整代码
-
例:爸爸往桌子上每次放一个苹果,儿子每次从桌子上拿一个苹果,放苹果和拿苹果不能同时进行,桌子上最多放10个苹果,用PV操作实现同步互斥。
-
分析&#
-