# The Producer-Consumer Problem
>【操作系统课程设计】实验三、生产者消费者问题
仓库地址:[spencerwooo/exp3-producer-consumer](https://github.com/spencerwooo/exp3-producer-consumer)
## 实验要求
1. 在 Windows 和 Linux 系统下通过进程编程模拟生产者消费者算法
2. 设计一个大小为 4 的缓冲区,初始为 "-",表示空
3. 创建 3 个生产者,每个生产者
* 随机等待一段 3 秒以内(含 3 秒)的时间,向缓冲区随机添加一个姓名首字母(大写),如王全玉的首字母为 W、Q、Y,即每次从这三个字母中取一个;
* 若缓冲区已满,等待消费者取走字母后再添加;
* 重复 4 次;
4. 创建 4 个消费者,每个消费者
* 随机等待一段时间,从缓冲区读取字母
* 若缓冲区为空,等待生产者添加字母后再读取
* 重复 3 次
5. 需打印每次操作内容
* 生产者打印:生产者本次写入缓冲区字母
* 消费者打印:消费者本次取走的字母
* 需打印缓冲区内容
* 按先生产的商品先消费原则
## 预期输出
### Linux
<div align="center">
<img src="Images/linux.png" alt="Linux Screenshot" width="80%">
</div>
### Windows
<div align="center">
<img src="Images/windows.png" alt="Windows Screenshot" width="80%">
</div>
## 构建方式
项目结构为:
```
.
├── Images
│ ├── linux.png
│ └── windows.png
├── LICENSE
├── Linux
│ ├── pcp
│ └── pcp.cpp
├── README.md
└── Windows
├── compile.ps1
├── consumer.cpp
├── consumer.exe
├── mainpcp.cpp
├── mainpcp.exe
├── mainpcp.h
├── producer.cpp
└── producer.exe
3 directories, 14 files
```
Linux 文件夹下为 Linux 版本的进程模拟源码,Windows 文件夹下为 Windows 版本的进程模拟源码。
### Linux
- 进入 Linux 文件夹,编译 C++ 文件 `pcp.cpp`
```bash
cd Linux && g++ pcp.cpp -o pcp
```
- 运行可执行文件 `pcp`
```bash
./pcp
```
### Windows
- 进入 Windows 文件夹,选择运行编译脚本 `compile.ps1`
```powershell
cd Windows && .\compile.ps1
```
- 运行主程序可执行文件 `mainpcp.exe`
```powershell
.\mainpcp.exe
```
没有合适的资源?快使用搜索试试~ 我知道了~
资源推荐
资源详情
资源评论
收起资源包目录
操作系统课程设计-实验三、生产者消费者问题.zip (13个子文件)
Windows
consumer.exe 61KB
mainpcp.exe 61KB
mainpcp.h 1KB
consumer.cpp 3KB
producer.exe 61KB
compile.ps1 97B
mainpcp.cpp 5KB
producer.cpp 3KB
Images
linux.png 1.08MB
windows.png 999KB
README.md 2KB
Linux
pcp 18KB
pcp.cpp 6KB
共 13 条
- 1
资源评论
小码蚁.
- 粉丝: 2526
- 资源: 4089
下载权益
C知道特权
VIP文章
课程特权
开通VIP
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- Pytorch框架基于Bert构建词向量+Bi-LSTM+Attention实现情感分类任务python源码+数据集.zip
- ####这是一篇对软件测试实验报告详细介绍(含代码)
- 这是一篇关于白盒测试的详细描述文章.docx
- ###这是一篇描述vector的教程文章
- 基于RISC-V的一个简单的五级流水线CPU设计源码+项目说明.zip
- 抽取地下水对加州约塞米蒂国家公园山地湿地复合体可持续性的影响
- C++vector介绍及详细使用示例(源代码)
- java基于GUI的简单记事本
- 指纹识别-基于OpenCV实现的指纹识别算法-附项目源码.zip
- 206693250008_R01C02_Grn.idat
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功