课程设计:多道程序缓冲区协调操作

课程设计:多道程序缓冲区协调操作

ID:22598182

大小:367.18 KB

页数:16页

时间:2018-10-30

课程设计:多道程序缓冲区协调操作_第1页
课程设计:多道程序缓冲区协调操作_第2页
课程设计:多道程序缓冲区协调操作_第3页
课程设计:多道程序缓冲区协调操作_第4页
课程设计:多道程序缓冲区协调操作_第5页
资源描述:

《课程设计:多道程序缓冲区协调操作》由会员上传分享,免费在线阅读,更多相关内容在学术论文-天天文库

1、摘要生产者一消费者fuj题是和互合作的进程关系的一种抽象,可以利用信号量机制來解决生产者一消费者问题,利用互斥信兮虽mutex实现进程对缓冲池的互斥使用。利川信号量实现缓冲区管理临界区协调问题。解决由于进程线程扑卒内存Ifthli现的与时间有失的错误。掌握倌号M的基本概念及PV操作的原理,进一步熟悉信号M解决的经典问题,利川信号量的原理实现不同操作系统K同步互斥问题.在计算机内存中同时存放几道相互独立的程序,使它们在管理程序控制之下,相互穿插的运行。两个或两个以上程序在计算机系统中冋处于开始个结束之间的状态。多道程序设计,是在计算机

2、内存中M时存放几道相互独立的程序,使它们在管理程序控制之卜,相互穿插的运行。目录1.祁诚32.课程设计任务及要求32.1设计任务32.2设计要求33.算法及数据结构43.1算法的总体思想43.2put模块43.2.1功能43.2.2数据结构43.2.3算法43.3move线程模块53.3.1功能53.3.2数据结构53.3.3算法53.4gct线程模块53.4.1功能53.4.2数据结构53.4.3算法54.程序设计与实现64.1程序流程阁64.2程序代码74.3实验结果125.组仑136.收获、体会和建议137.参考文献141.概

3、述在程序中使用多线程时,一般很少有多个线程能在其生命周期内进行并完全独立的操作。更多的情况是一些线程进行某些处理操作,而其他的线程必须对其处理结果进行Y解。正常情况下对这种处理结果的r解应当在k处理任务完成后进行的。如果不采取适当的措施,其他线程往往会在线程处理任务结火前就去访问处理结果,这就很有可能得到有叉处理结果的错误的了解.例如,多个线柷同吋访问同一个全局变暈,如果都足读取操作,则不会出现叫题。如果一•个线程负责改变此变量的值,而其他线程负责同时读取变量内容,则不能保证读収到的数据是经过写线程修改后的。为Y确保读线程读収到的是

4、经过修改的变跫,就必须在想变S写入数椐时就禁止其他线程对其的任付访问,直至赋值过程结束后冉接触对艿他线程的访问限制。像这种侃证线程能了解K他线程任务结束P的处理结果而采取的保护措施即为线程同步。2.课程设计任务及要求2.1设计任务设计一个多道程序完成冇10个PUT操作要不断循环地向Buffcrl送数椐,冇一个Move操作要不断地将Buffer1的数裾取到Buffer2,存20个GET操作要不断地从Buff2屮取数拋。BUFF1是10,BUFF2的容虽是20,PUT、MOVE、GET每次操作一个数裾,为丫在操作的过程中要保证数据不丢失

5、,每个Buffer每次只能接受一个PUT或一个Move或一个Get,多个操作不能同时操作同一BUFFERo分工:谢沛加:杳找资料,讨论需要实现的功能,编译主函数,根裾网上教程编写线程产生与销毁,加入关键注释让代码奋可读性,没计程序的简单界面,与同学积极讨论解决代码屮的蓝剑:查找网上相关资料,讨论题F1中耍实现的程序功能探讨如何实现,与队友积极交流对程序的想法思路,编写文档,2.2设计要求(1)显示Buffer的操作过程;(2)可以确定Buffer的界景、PUT、GET、MOVE操作的个数;(3)fi行确定放数据的速度,収数据的速度;

6、(1)实时显示每个Buffer中数裾的个数,已放入Buffer的数裾个数,已取的数裾个数;(1)程序运行结束,显示汇总数据:a)总的运行时间;b)Buffer中数掘的个数;c)已放入BUFFER的数据个数;d)已放已取的数据个数;e)T•均buffer中的数掘个数。1.算法及数据结构3.1算法的总体思想酋先要解决毎个Buffer特次W能接受一个PUT或一个Move或-个Get那么在特一个Buffer中定义-个瓦斤信号量sem,线程要使用Buffer吋,必须等待sem的信号量,如果没有得到的话需一直等待,等待到其他线程释放出sem的信

7、号量第二要解决Buffer间中信兮问题,避免Buffer中无数据或满数裾时误操作。通过设置iFull初值为o,oFull初值为0,iEmpty初值为10,oEmpty初值20。当进行数裾操作吋,对信号景进行增加解决第三题目要求要显示出程序运行吋,实吋显示出Buffer中数据的状态,通过设置全局变朵解决例:设置全局变量i_num控制要执行线程的次数,没执行一次加一,当检测到时,执行exit(0);结朿进程设S全局变量Bufferl_ied监控Buffer已写入的数据个数,每次执行一次put线程则加1,最后可以显示出Bufferl_ie

8、d3.2put模块3.2.1功能随机产生一个不大于128的随机数,将产生的随机数加入到Bufferl容器中3.2.2数据结构voidput(void*arg)3.2.3算法v«i,Jiv,、轉ttIKM入.f、Kr5tffU;1Ful

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。