- 74
- 0
- 约1.11万字
- 约 12页
- 2021-11-28 发布于辽宁
- 举报
.
《进程同步与互斥 》实验报告
实验序号: 01 实验项目名称:进程同步与互斥
学 号 姓 名 专业、班
实验地点 指导教师 时间
一、实验目的
1、掌握基本的进程同步与互斥算法,理解生产者 - 消费者问题。
2、学习使用 Windows 2000/XP 中基本的同步对象,掌握相关 API 的使用方
法。
3、了解 Windows 2000/XP 中多线程的并发执行机制,实现进程的同步与互
斥。
4 、设计程序,实现生产者 - 消费者进程 ( 线程 ) 的同步与互斥;
二、实验环境
Windows 2000/XP + Visual C++ 6.0
三、实验内容
以生产者 - 消费者模型为依据,在 Windows 2000/XP 环境下创建一个控制台
进程,在该进程中创建 n 个线程模拟生产者和消费者,实现进程 ( 线程 ) 的同步与
互斥。
四、设计思路和流程框图
生产者进程的功能:生产东西,供消费者消费;消费者进程的功能:消费生
产者生产的东西。生产者生产产品并存入缓冲区供消费者取走使用,消费者从缓
冲器内取出产品去消费。在生产者和消费者同时工作时,必须禁止生产者将产品
放入已装满的缓冲器内,禁止消费者从空缓冲器内取产品。
五、源程序(含注释)清单
#includewindows.h
.
.
#includefstream.h
#includestdio.h
#includestring
#includeconio.h
// 定义一些常量;
// 本程序允许的最大临界区数;
#define MAX_BUFFER_NUM 10
// 秒到微秒的乘法因子;
#define INTE_PER_SEC 1000
// 本程序允许的生产和消费线程的总数;
#define MAX_THREAD_NUM 64
// 定义一个结构,记录在测试文件中指定的每一个线程的参数
struct ThreadInfo
{
int serial; // 线程序列号
char entity; // 是 P还是 C
double delay; // 线程延迟
int thread_request[MAX_THREAD_NUM]; // 线程请求队列
int n_request; // 请求个数
};
// 全局变量的定义
// 临界区对象的声明 , 用于管理缓冲区的互斥访问;
CRITICAL_SECTIONPC_Critical[MAX_BUFFER_NUM];
int Buffer_Critical[MAX_BUFFER_NUM]; // 缓冲区声明,用于存放产
品;
HANDLE h_Thread[MAX_THREAD_NUM]; // 用于存储每个线程句柄的数组;
.
.
ThreadInfo Thread_Info[MAX_THREAD_NUM
您可能关注的文档
最近下载
- 明代宗教信仰与思想控制.docx VIP
- 江苏省南通市2024-2025学年高二上学期期末学业质量监测语文试卷(含答案).pdf VIP
- 国就有成人演出的电影了?想看就要冒生命危险.pdf VIP
- 综合素质练习题及答案.doc VIP
- 2020-2021学年北京高三化学二轮复习 反应原理型简答题(突破二卷)(word版 含答案).docx VIP
- 电力拖动控制线路安装与检修(白银矿冶职业技术学院)知到智慧树答案.docx VIP
- 煤炭巷道掘砌工(高级工)资格考试题库(全真题库).docx VIP
- 影像叙事中情感共鸣生成机制.docx VIP
- 同轴二级圆柱齿轮减速器的设计(硬齿面).doc VIP
- 基于GPU多线程多通道图像高速重构方法、设备及介质.pdf VIP
原创力文档

文档评论(0)