- 45
- 0
- 约6.81千字
- 约 9页
- 2018-08-06 发布于湖北
- 举报
实验题目生产者和消费者实验实验目的通过对“生产者-消费者”问题编程实现,了解线程创建、同步信号量、互斥信号量、临界区的创建和使用,初步了解并发程序设计方法。实验内容“生产者-消费者问题模型是指一组生产者进程和一组消费者进程通过一个缓冲区进行合作。先有生产者生产产品,再有消费者消费生产者生产的产品。本实验以“生产者-消费者”模型为依据,提供了一个多线程“生产者-消费者”实例,要求读者分析该实例,调试并得出最终结果。分析该结果,得相应结论。设计思路和算法主要数据结构及其说明InitializeCriticalSection()函数函数功能:初始化一个临界资源对象CreateSemaphore()函数函数功能:创建一个同步信号灯Semaphore CreateMutex()函数函数功能:创建一个互斥信号灯MutexCreateThread()函数函数功能:创建一线程WaitForSingleObject()函数函数功能:有信号量时执行,否则一直等待测试数据设计及测试结果分析输入文本缓冲区数线程序号线程标识延时时间消费顺序由test1到达的时间知:线程执行的顺序是637(消费产品1,无1,等待)217(有产品1,消费,消费产品3,有3,消费,消费产品2,有2,消费)4(消费产品5,无5,等待)54(有产品5,消费,消费产品6,有6消费)程序能正常执行至结束由test3到达时间及缓冲区数量知6,3,8(消费产品1,无1,等待),2,7,,5(无缓冲区不生产,找消费者消费),4(消费产品5,无5,等待)1(无缓冲区不生产,找消费者消费)程序形成死锁,可调整执行顺序或者增加缓冲区消除死锁程序运行结果test1运行结果:test3运行结果:实验体会在有限的缓冲区里,生产者生产的产品要有消费者来消费,使缓冲区一直保持在可用状态,若是安排不合理,则会陷入死循环。一般上,解决的办法一是调度算法合理,即线程到达的顺序,二是安排足够大的缓冲区。生产者线程和消费者线程共用一个缓冲池时,生产者生产产品占用缓冲区,消费者消费产品释放缓冲区,要使变量之间的数传递。系统对这两个函数执行的过程使用的是并发执行,即在执行过程中跳过这段程序转去执行另一段并发程序,回过头来再执行起初尚未执行完的那段程序。这次实验让我们看到了并发程序执行的过程。附源程序文件#includewindows.h#includefstream.h#includestdio.h#includestring#includeconio.h//定义一些常量#define MAX_BUFFER_NUM 20 //本程序允许的最大临界区间#define INTE_PER_SEC 1000 //秒到毫秒的乘法因子#define MAX_THREAD_NUM 64 //本程序允许的生产者和消费者线程的总数//定义一个结构,记录在测试文件中指定的每一个线程的参数struct ThreadInfo{int serial; //线程序列号char entity; double delay; //线程延迟int thread_request[MAX_THREAD_NUM]; //线程请求队列int n_request; //请求个数};//全局变量CRITICAL_SECTION PC_Critical[MAX_BUFFER_NUM];//临界区对象的声明,用于管理缓冲区的互斥访问int Buffer_Critical[MAX_BUFFER_NUM];//缓冲区声明,用于存放产品HANDLE h_Thread[MAX_THREAD_NUM]; //用于存储每个线程句柄的数组ThreadInfo Thread_Info[MAX_THREAD_NUM];//线程信息数组HANDLE empty_semaphore; //一个信号量HANDLE h_mutex; //一个互斥量DWORD n_Thread = 0; //实际的线程数目DWORD n_Buffer_or_Critical; //实际的缓冲区或者临界区数目HANDLE h_Semaphore[MAX_THREAD_NUM]; //生产者允许消费者开始消费的信号量//生产消费及辅助函数的声明void Produce(void *p);void Consume(void *p);bool IfInOtherRequest(int);int FindProducePosition();int FindBufferPosition(int);int main(void){//声明所需变量DWORD wait_for_all;ifstream inFile;//初始化缓冲区for(int i=0;i MAX_BUFFER_NUM; i++)Buffer_Criti
您可能关注的文档
最近下载
- 明代宗教信仰与思想控制.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)