哲学家就餐问题
3页1、/*inux 进程的实现:哲学家就餐问题在 linux 上的程序实现设有 5 个哲学家,共享一张放油把椅子的桌子,每人分得一吧椅子.但是桌子上总共只有 5 支 筷子,在每个人两边分开各放一支.哲学家只有在肚子饥饿时才试图分两次从两边拾起筷子就 餐.就餐条件是:1)哲学家想吃饭时,先提出吃饭的要求;2)提出吃饭要求,并拿到 2 支筷子后,方可吃饭;3)如果筷子已被他人获得,则必须等待该人吃完饭之后才能获取该筷子;4)任一哲学家在自己未拿到 2 支筷子吃饭之前,决不放下手中的筷子;5)刚开始就餐时,只允许 2 个哲学家请求吃饭.试问:1)描述一个保证不会出现两个邻座同时要求吃饭的算法;2)描述一个既没有两邻座同时吃饭,又没有人饿死的算法;3)在什么情况下,5 个哲学家全都吃不上饭?哲学家进餐问题是典型的同步问题.它是由 Dijkstra 提出并解决的.该问题是描述有五个 哲学家,他们的生活方式是交替地进行思考和进餐.哲学家们共用一张圆桌,分别坐在周围的 五张椅子上.在圆桌上有五个碗和五支筷子,平时一个哲学家进行思考,饥饿时便试图取用其 左右岁靠近他的筷子,只有在他拿到两支筷子时才能进餐.进
2、餐完毕,放下筷子继续思考.*/#include #include #include #include #include #include /#include “RasUtil.h“ using namespace std; const unsigned int PHILOSOPHER_NUM=5; const char THINKING=1; const char HUNGRY=2; const char DINING=3; sem_t semphPHILOSOPHER_NUM; / each fork has a semaphore pthread_mutex_t mutex; / Mutex for printing void* philosopherProc(void* param); int main(int argc, char* argv) int i; srand(getpid(); pthread_t philosopherThreadPHILOSOPHER_NUM; /定义线程数组int phIdPHILOSOPHER_NUM; pthread_mutex_init(
《哲学家就餐问题》由会员kms****20分享,可在线阅读,更多相关《哲学家就餐问题》请在金锄头文库上搜索。
高三文科数学(长方体模型1)
高一生物:必修2 1.1孟德尔的豌豆杂交实验
遗传学第1章 绪言
高等代数课件--第三章 线性方程组§3.3 线性相关性
高二数学(1.1-1空间几何体及棱柱、棱锥的结构特征)
递回关系与演算法分析
过程是vb的基本组成单位
营养器官的生长
细菌真菌在生物圈中的作用课件(济南版七年级上)
自动化-ab变频器的原理及其应用
网络操作系统-第16章 windows server 2003安全管理
网络安全+第4讲+防火墙
素材-接触网施工技术-双线隧道吊柱安装
系统结构第5章
计算机体系结构实验2008
计算机系统安全
高考词汇总常用词v
软件测试tmap
电脑文件被删除怎么恢复图文教程
电子教案--第9章
2022-09-23 2页
2023-08-29 33页
2023-11-03 5页
2022-10-04 10页
2023-06-23 2页
2023-10-26 11页
2023-04-18 6页
2023-05-28 3页
2023-10-20 2页
2022-10-04 13页