计算机应用 | 古代文学 | 市场营销 | 生命科学 | 交通物流 | 财务管理 | 历史学 | 毕业 | 哲学 | 政治 | 财税 | 经济 | 金融 | 审计 | 法学 | 护理学 | 国际经济与贸易
计算机软件 | 新闻传播 | 电子商务 | 土木工程 | 临床医学 | 旅游管理 | 建筑学 | 文学 | 化学 | 数学 | 物理 | 地理 | 理工 | 生命 | 文化 | 企业管理 | 电子信息工程
计算机网络 | 语言文学 | 信息安全 | 工程力学 | 工商管理 | 经济管理 | 计算机 | 机电 | 材料 | 医学 | 药学 | 会计 | 硕士 | 法律 | MBA
现当代文学 | 英美文学 | 通讯工程 | 网络工程 | 行政管理 | 公共管理 | 自动化 | 艺术 | 音乐 | 舞蹈 | 美术 | 本科 | 教育 | 英语 |

基于C++的读者与写者问题read—write problem的实现(8)

2013-07-08 01:38
导读:sp;ReaderPriority("thread.dat"); else WriterPriority("thread.dat"); printf("\nPress Any Key to Coutinue:"); _getch(); system("cls"); } return 0; } 4.2.thread.dat //辅助的文件,但是必不可以少
sp;ReaderPriority("thread.dat");
  else
   WriterPriority("thread.dat");
  printf("\nPress Any Key to Coutinue:");
  _getch();
  system("cls");
}
 return 0;
}

4.2.thread.dat //辅助的文件,但是必不可以少
 
 1  r   3  5
 2  w   4  5
 3  r   5   2
 4  r   6   5
 5  w   5.1  3
 


5.运行结果与运行情况
   对源程序进行编译,链接后,执行程序:

 
 当选择1 Reader Priority 时,程序运行结果如下:
 

 

按任意建后会到主界面,然后选择2.Writer Priority 后,程序运行结果如下:
   

 

6.调试记录
 在编程过程中,没有设置计数器来存储读者数目,结果在程序运行时,产生了读者与读者的互斥。之后通过翻阅资料,了解了需要加入计数器来控制读者与读者之间的同等优先,同时也用于控制写者进程的释放,既当计数器为0的时候,允许写进程访问文件。
 在加入计数器后,重新编写程序,就解决了以上问题。当程序通过编译链接之后,运行程序,得到了正确的结果。然后修改文件thread.dat中的参数:
1 R 3 4
2 R 4 3
3 W 4 5
 重新对程序进行测试,分别选择读者优先和写者优先,结果正确。
 最后修改文件thread.dat中的参数,使用更多的读写请求:
1 W 2 5
2 R 3 4
3 W 5 3
4 R 6 5
5 R 7 4
6 W 9 5
7 R 11 4
8 R 14 5
9 W 17 6
10 R 20 5
   运行程序的结果都正确。读者写者问题程序设计成功。 (科教范文网http://fw.nseac.com)
7.自我评析和总结
 课程设计是培养学生综合运用所学知识,发现,提出,分析和解决实际问题,锻炼实践能力的重要环节,是对学生实际工作能力的具体训练和考察过程.
 操作系统的出现,使用和发展是近四十余年来计算机软件的一个重大进展。操作系统中引入并发程序设计技术后,程序的执行不在是顺序的。一个程序未执行完而另一个程序便已开始执行,程序挖补的顺序特性消失,程序与计算不再一一对应,所以操作系统引进进程概念来描述这种变化。读者与写者问题就是一个经典的并发程序设计问题。
 在开始做课程设计时,我首先翻阅了很多关于并发程序的书籍,找到了基本的解决方法,那就是信号量的使用。记录型信号量和PV操作不仅可以解决进程的互斥,而且更是实现进程同步的有力工具。但是发现光有信号量是解决不了读者和写者问题,因为所有读进程不会相互互斥。所以程序对信号量进行了改进。引入了一个计数器,记录读者的数目,控制是否释放写者进程。
 做到这些,思路已经基本确定。在变成过程中查阅了许多书籍,也对WINDOWS下的一些API做了些了解。
 接近2周的课程设计,让我学到了不少东西,从开始的查阅书籍,确定思路,到最后的编写程序和调试。设计过程中遇到了不少困难,但在同学和老师的帮助下都一一克服了。
 总之,每一次课程设计不仅是我们学习的好机会,而且是我们锻炼实际动手能力的平台,虽然有难度的东西总会让人很抵触,比如在课设过程中有很多郁闷的时候,一个小小的错误一不小心就花去了自己一上午的时间,所以在这个过程中能够磨练人的意志与耐心,最后感谢老师的指导与监督,使我在课程设计过程中学到了书本是学不到的知识,同时也对操作系统有了更深刻的认识,为以后的学习打下了坚实的基础。

上一篇:C# 考务和成绩管理系统(一)毕业论文 下一篇:没有了