录像厅问题

假设一个录像厅有0,1,2三种不同的录像片可由观众选择放映。录像厅的放映规则为:
1)任何时刻最多只能放映一种录像片,正在放映的录像片是自动循环放映的。最后一个观众主动离开时结束当前录像片的放映。
2)选择当前正在放映录像片的观众可立即进入,允许同时有多位选择同一中录像片的观众同时观看,同时观看的观众数量不受限制。
3)等待观看其他录像片的观众按到达顺序排队,当一种新的录像片开始放映时,所有等待观看该录像片的观众可一次进入录像厅同时观看。

问题分析

临界资源:录像厅

  1. 对三种不同的观众来说,使用录像厅是互斥的,用mutex来表示;
  2. 对于每一种不同的观众观影时,我们需要知道该类观众的人数,用count0、count1、count2来表示;
  3. 为了保证计数变量的操作之间是互斥的,用mutex0、mutex1、mutex2分别表示count0、count1、count2的互斥使用

代码

semaphore mutex=1,mutex0=1,mutex1=1,mutex2=1;
int count0=0,count1=0,count2=0;void zero()
{P(mutex0);if(count0=0) P(mutex);count0++;V(mutex0);观影; P(mutex0);count0--;if(count0=0) V(mutex);V(mutex0);} void one()
{P(mutex1);if(count1=0) P(mutex);count1++;V(mutex1);观影; P(mutex1);count1--;if(count1=0) V(mutex);V(mutex1);
}void two()
{P(mutex2);if(count2=0) P(mutex);count2++;V(mutex2);观影; P(mutex2);count2--;if(coun2=0) V(mutex);V(mutex2);
}void main()
{cobeginzero();one();two();coend
}

假设一个录像厅有0,1,2三种不同的录像片可由观众选择放映。录像厅的放映规则为: 1)任何时刻最多只能放映一种录像片,正在放映的录像片是自动循环放映的。最后一个观众主动离开时结束当前录像片的放映。相关推荐

  1. LeetCode 455[Python]. 分发饼干 假设你是一位很棒的家长,想要给你的孩子们一些小饼干。但是,每个孩子最多只能给一块饼干。

    LeetCode 455. 分发饼干 假设你是一位很棒的家长,想要给你的孩子们一些小饼干.但是,每个孩子最多只能给一块饼干. 对每个孩子 i,都有一个胃口值 g[i],这是能让孩子们满足胃口的饼干的最 ...

  2. php 三色排序,一个数组中只有0,1,2三种元素,要求对这样的数组进行排序,一个数组中只有0,1,2三种元素,要求对这样的数组进行排序,第2章 排序 | | 第17节 三色排序练习题...

    1.思路: 1.1思路1: 第一眼看到这样的题目,会举得非常简单,只需要两次遍历数组就可以完成了.第一次遍历,扫描数组中的元素,每次遇到0则count0++,遇到1则count1++,遇到2则coun ...

  3. .假设一个简单的ATM机的取款过程是这样的:首先提示用户输入密码(password),最多只能输入三次,超过三次则提示用户“密码错误,请取卡”结束交易。

    假设一个简单的ATM机的取款过程是这样的:首先提示用户输入密码(password),最多只能输入三次,超过三次则提示用户"密码错误,请取卡"结束交易.如果用户密码正确,再提示用户输 ...

  4. 【C++练习】4.2假设国家银监局需要统计银行总的存款数量,请设计一个友元函数,用于统计三家银行的总存款量。

    假设国家银监局需要统计银行总的存款数量,请设计一个友元函数,用于统计三家银行的总存款量. /* 2. 假设国家银监局需要统计银行总的存款数量,请设计一个友元函数,用于统计三家银行的总存款量. */ # ...

  5. Java黑皮书课后题第4章:*4.7(顶点坐标)假设一个正五边形的中心位于(0,0),其中一个点位于0点位置。编写程序,提示用户输入正五边形外接圆的半径,显示p1到p5的5个坐标,保留两位小数

    *4.7(顶点坐标)假设一个正五边形的中心位于(0,0),其中一个点位于0点位置.编写程序,提示用户输入正五边形外接圆的半径,显示p1到p5为5个坐标,保留两位小数 题目 题目概述 运行示例 破题 代 ...

  6. 斐波那契(Fibonacci,意大利数学家,1170年-1240年)数列,又称黄金分割数列,指的是这样一个数列:0、1、1、2、3、5、8、13、21、……。这个数列从第三项开始,每一项都等于前两项之

    Problem Description 斐波那契(Fibonacci,意大利数学家,1170年-1240年)数列,又称黄金分割数列,指的是这样一个数列:0.1.1.2.3.5.8.13.21.--.这 ...

  7. 基于LSTM三分类的文本情感分析,采用LSTM模型,训练一个能够识别文本postive, neutral, negative三种

    基于LSTM三分类的文本情感分析,采用LSTM模型,训练一个能够识别文本postive, neutral, negative三种 ,含数据集可直接运行 完整代码下载地址:基于LSTM三分类的文本情感分 ...

  8. PPT2010中轻松实现PPT自动循环播放

    在产品展销会.人才招聘会时,我们可能会需要PPT自动循环播放.在PPT2010中可以很轻松地实现自动循环播放效果. 设置放映法 在PPT 2010中,通过排练计时已经可以让PPT自动播放,但只能自动播 ...

  9. 设置PowerPoint2007自动循环播放

    转载者: 英文版篮球ppt课件              来源: www.2ppt.cn 您的位置: 主页 > PowerPoint教程 > PowerPoint2007教程 > 设 ...

最新文章

  1. Linux 网卡相关操作
  2. 基于 abp vNext 和 .NET Core 开发博客项目 - Blazor 实战系列(九)
  3. CString .Format
  4. Web API核查表:设计、测试、发布API时需思考的43件事
  5. pytorch---模型加载与保存(2)
  6. The GenerateResource task failed unexpectedly. a generic error occured in GDI+
  7. 通达信资金净流入公式_通达信资金净流量指标公式
  8. 当年轻人在说“夸克真香”,他们在说什么?
  9. CFSSL: 证书管理工具:2:创建CA私钥与CA证书
  10. 获取小猪民宿(短租)数据
  11. 用计算机写作文教学反思,语文作文教学反思(精选6篇)
  12. Hadoop三大框架之MapReduce工作流程
  13. 张寓博当选山东省收藏者协会副主席兼美术评论委员会主任
  14. [转载]Android实现更换皮肤功能
  15. 已安装内存:16.0GB(3.93GB可用):拆开机箱拔掉内存条重新安装试试。
  16. vue疫情大屏数据展示+数据导出+地图图片下载
  17. 河师大计算机学院宿舍情况哪,河师大环境学院“惊现”7个学霸宿舍
  18. 使用vue.js + jQuery开发组件
  19. 物联网技术周报第 121 期: 使用 Arduino 监测你的睡眠质量
  20. 部队应急通信指挥调度方案

热门文章

  1. 循环和switch语句中的continue、break
  2. 木瓜移动每日资讯0601:速卖通5月底发布“G100出海计划”
  3. 依那西普血清水平与强直性脊柱炎患者疗效无相关性
  4. sqlmap的使用方法 ——时光凉春衫薄
  5. 什么是MySql触发器?作用是什么?
  6. 双CPU与单CPU有什么区别,有什么优势?
  7. 【英语】大学英语CET考试,写作部分(论述文+应用文,6篇范文)
  8. 有趣的Ruby-学习笔记5
  9. vs.net 2003 下载地址
  10. mariadb 卸载 Kali_流氓软件卸载不掉?赶紧试试这款免费专业的卸载神器!专治各类顽固派软件!...