操作系统课程试验
进程间同步/互斥问题——银行柜员服务问题
BobAnkh
June 2021
编程平台: Ubuntu 18.04.5 LTS (GNU/Linux 4.15.0‐142‐generic x86_64)
编程语言: C/C++, 采用了部分 C++11 特性
一. 实验题目
1. 问题描述
银行有 n 个柜员负责为顾客服务,顾客进入银行先取一个号码,然后等着叫号。当某个柜员
空闲下来,就叫下一个号。
编程实现该问题,用 P、V 操作实现柜员和顾客的同步。
2. 实现要求
1. 某个号码只能由一名顾客取得;
2. 不能有多于一个柜员叫同一个号;
3. 有顾客的时候,柜员才叫号;
4. 无柜员空闲的时候,顾客需要等待;
5. 无顾客的时候,柜员需要等待。
3. 实现提示
1. 互斥对象:顾客拿号,柜员叫号;
2. 同步对象:顾客和柜员;
3. 等待同步对象的队列:等待的顾客,等待的柜员;
4. 所有数据结构在访问时也需要互斥。
1