C++哲学家进餐问题设计设计与实现
以下是资料介绍,如需要完整的请充值下载.
1.无需注册登录,支付后按照提示操作即可获取该资料.
2.资料以网页介绍的为准,下载后不会有水印.资料仅供学习参考之用.
密 惠 保
1.无需注册登录,支付后按照提示操作即可获取该资料.
2.资料以网页介绍的为准,下载后不会有水印.资料仅供学习参考之用.
密 惠 保
资料介绍:
摘 要在多道程序环境下,进程同步问题十分重要,也是相当有趣的问题,因而吸引了不少学者对它进行研究,由此而产生一系列经典的进程同步问题.其中较有代表性的是哲学家进餐问题等等,通过这些问题的研究和学习,可以帮助我们列好地理解进程同步概念及实现方法.由Dijkstra提出并解决的哲学家进餐问题(The Dinning Philosophers Problem)是典型的同步问题,该问题是描述有五个哲学家共用一张圆桌,分别坐在周围的五张椅子上,在圆桌上有五个碗和五只筷子,他们的生活方式是交替地进行思考和进餐,平时,一个哲学家进行思考,饥饿时便试图取用其左右最靠近他的筷子,只有在他拿到两只筷子时才能进餐,进餐毕,放下筷子继续思考.第一章 需求分析问题描述: 由Dijkstra 提出并解决的哲学家进餐问题 (The Dinning Philosophers Problem)有五个哲学家共用一张圆桌,分别坐在周围的五张椅子上,在圆桌上有五个碗和五只筷子,他们的生活方式是交替地进行思考和进餐。平时,一个哲学家进行思考,饥饿时便试图取用其左右最靠近他的筷子,只有他拿到两只筷子时才能进餐。进餐毕,放下筷子继续思考。需求分析:经分析可知,放在桌子上的筷子是临界资源,在一段时间内只允许一位哲学家使用。在设计实现与演示该问题时,为了实现对筷子的互斥使用,程序中使用互斥量表示一只筷子,每一支筷子使用一个互斥量,五个筷子总共需要五个互斥量所有信号量。当哲学家饥饿时,总是先去拿他左边的筷子,成功后再去拿他右边的筷子,如果两次操作都成功便可进餐。进餐毕,先放下他左边的筷子,然后再放下他右边的筷子。为了模拟实现五个哲学家的进餐情况,利用操作系统提供的多线程来模拟进程实现哲学家进餐的过程功能,其中一个为主线程,用于为要进餐的哲学家提供场所。子线程与主线程并行执行,主线程控制着它们的生成。子线程用于处理要进餐的哲学家,其功能有申请筷子、把申请到筷子的哲学家置为进餐状态、释放筷子。 全套毕业设计包含的内容如下:源程序+论文(15000字以上)+可执行程序+答辩稿+开题报告如需要请您和我们客服QQ联系