您现在的位置:网站首页答辩论文计算机毕业设计计算机论文计算机软件

基于C++的读者与写者问题的实现

  • 简介:(页数:19字数:4790)1.设计题目与要求 读者写者问题(read—write problem)是一个经典的并发程序设计问题。有两组并发进程:读者和写者,共享一个问题F,要求:(1)允许多个读者可同时对之执行读操作;(2)只允许一个写者往文件中写信息;(...
    • 请与管理员联系购买资料 QQ:5739126
  • 论文简介
  • 相关论文
  • 论文下载

(页数:19字数:4790)1.设计题目与要求 读者写者问题(read—write problem)是一个经典的并发程序设计问题。有两组并发进程:读者和写者,共享一个问题F,要求:(1)允许多个读者可同时对之执行读操作;(2)只允许一个写者往文件中写信息;(3)任一写者在完成写操作之前不允许其他读者或者写者工作;(4)写者执行写操作前,应让已有的写者和读者全部退出。

2.总的设计思想及系统平台、语言、工具等
2.1 设计思想
根据题目要求,首先分析了以下4种可能发生的情况:
第 1 种情况: 读者的优先权比写者高,而且,不用调配。
所有读者的优先权都比写者的优先权高,而且,不用调配。一个读者需要等待的唯一情况是,一个写者已经占用了文件。一个写者可以取得文件的条件是,没有一个读者处在等待状态或正在读文件。允许读者们结盟,以便能长期占用文件,而禁止写者的写。
第 2 种情况: 在一个读者已经占有了文件的时候,全体读者的优先权才比写者高。
在没有任何一个读者在读文件时,读者的优先权和写者的优先权相同。相反,如果有一个读者正在读文件,则其余的各读者都可以读文件,而不管有多少写者处在等待状态。所有读者都有权结盟,以便垄断文件。
第 3 种情况: 写者的优先权比读者的优先权高。
在一个写者提出要访问文件时,就必须使其尽可能的得到文件,而且不用调配。也就是说,在出现这一请求时,占据着文件的各进程都被执行完以后,写者可以立即得到文件。因此,在文件已为一写者请求之后到来的那些读者都必须等待,尽管某些读者正在应用文件,也是如此。所有写者可以结盟,以便能长期禁止读者的读。
第 4 种情况: 所有写者的和所有读者有相同的优先权高,哪一类都不会有比另一类更高的优先权。
如果一个读者正在应用文件,则在一个写者请求文件之前到来的全体读者,都能读文件,而之后到来的读者或写者,则要等待,不必区分他们属于哪一类进程。如果一个写者正在写文件,则所有新到来的请求都必须等待。在这一写者写完之后,它就要唤醒处在等待队列中的排在第一个位置的进程。如果此时有几个读者连续排在等待队列中的最前面各位置上,则它们可以同时去读文件。

 

1.设计题目与要求 1
2.总的设计思想及系统平台、语言、工具等 1
2.1 设计思想 1
2.2 系统平台,语言,工具 4
3.数据结构与模块说明(功能与流程图) 4
3.1 功能实现 4
3.2 流程图 6
4.源程序 7
4.1 .ReaderAndWriter.CPP // 具体的实现 7
4.2.thread.dat //辅助的文件,但是必不可以少 15
5.运行结果与运行情况 15
6.调试记录 17
7.自我评析和总结 18

查看评论 已有0位网友发表了看法
  • 验证码: