产品入库的PV操作
来源:互联网 发布:c语言非空基本数据类型 编辑:程序博客网 时间:2024/05/29 05:04
在一个仓库中可以存放A和B两种产品,要求:
1)每次只能存入一种–互斥访问
2)A产品数量 - B产品数量 < M
3)B产品数量 - A产品数量 < N
其中,M,N是正整数,使用PV操作描述A和B的入库过程。
semaphore mutex = 1;int countA = 0,countB = 0;PA:while(1){ if(countA - countB < M - 1 && countB - countA < N) { P(mutex); A产品可以入库; V(mutex); countA++; }}PB:while(1){ if(countA - countB < M && countB - countA < N - 1 ) { P(mutex); B产品可以入库; V(mutex); countB++; }}
这种写法最符合思路,也可以再加同步的方式进行:
设置Sa表示A与B的差值,Sb表示B与A的差值。
semaphore mutex = 1;semaphore Sa = M-1, Sb = N - 1;PA:while(1){ P(Sa); P(mutex); A产品可以入库; V(mutex); V(Sb);}PB:while(1){ P(Sb); P(mutex); B产品可以入库; V(mutex); V(Sa);}
这种写法更符合PV操作的要求。也更简洁。
以上。
0 0
- 产品入库的PV操作
- 操作系统的PV操作
- 信号量的PV操作
- 信号灯的PV操作
- 系统PV操作的代码
- ipc/ 信号量的pv操作
- 线程的信号量 PV操作
- 线程间的pv操作
- PV操作信号量的设置
- 关于PV操作的理解
- 信号量的PV操作实例
- 信号量上的PV操作
- 信号量之间的PV操作
- 关于pv操作的理解
- 产品入库表
- PV操作
- PV操作
- PV操作
- 【转载】C++ 宏定义
- Service和Activity之间的交互
- sizeof & strlen
- 51单片机矩阵键盘库
- Servlet学习笔记
- 产品入库的PV操作
- LA3490 Generator(AC自动机或者kmp + dp +高斯消元)
- struts2使用cookie详解
- java环境搭建系列:JDK从下载安装到简单使用
- uva11181(概率)
- java基础:接口。
- Python——map()/reduce()
- LeetCode---35. Search Insert Position(查找插入位置)
- 数据结构