CSDN论坛 > VC/MFC > 进程/线程/DLL

win32多线程程序设计附书源码的哲学家进餐问题 [问题点数:100分,结帖人guyuguang8628391]

Bbs2
本版专家分:357
结帖率 100%
CSDN今日推荐
Bbs5
本版专家分:2728
Bbs5
本版专家分:3470
Bbs12
本版专家分:432294
版主
Blank
榜眼 2009年 总版技术专家分年内排行榜第二
2005年 总版技术专家分年内排行榜第二
Blank
银牌 2009年7月 总版技术专家分月排行榜第二
2009年3月 总版技术专家分月排行榜第二
2009年1月 总版技术专家分月排行榜第二
2005年7月 总版技术专家分月排行榜第二
2005年5月 总版技术专家分月排行榜第二
2005年3月 总版技术专家分月排行榜第二
Blank
优秀版主 优秀小版主
2015年8月优秀小版主
2015年9月优秀小版主
2015年5月优秀小版主
2015年2月论坛优秀版主
Blank
铜牌 2009年6月 总版技术专家分月排行榜第三
2009年2月 总版技术专家分月排行榜第三
2005年4月 总版技术专家分月排行榜第三
2005年1月 总版技术专家分月排行榜第三
Bbs2
本版专家分:357
Bbs10
本版专家分:188320
Blank
进士 2006年 总版技术专家分年内排行榜第五
2004年 总版技术专家分年内排行榜第八
Blank
银牌 2006年10月 总版技术专家分月排行榜第二
2006年9月 总版技术专家分月排行榜第二
Blank
铜牌 2006年5月 总版技术专家分月排行榜第三
Blank
微软MVP 2006年1月 荣获微软MVP称号
2008年1月 荣获微软MVP称号
2007年1月 荣获微软MVP称号
Bbs6
本版专家分:6337
Bbs2
本版专家分:357
Bbs2
本版专家分:357
Bbs2
本版专家分:357
匿名用户不能发表回复!
其他相关推荐
尝试解决哲学家进餐问题(Java实现)
一. 问题描述 5个哲学家,5跟筷子,哲学家必须用两只筷子吃东西。他们只能使用自己左右手边的那两只筷子。做到不产生死锁以及要求高并发性。 二.  资源加锁法 直接给所请求的资源加锁,其他人想访问必须等待; package psy; /** * 哲学家线程 * @author stephenluu * */ public class PerThrea
java 多线程 死锁 哲学家就餐问题
现在你理解了,一个对象可以有synchronized方法或其他形式的加锁机制来防止别的任务在互斥还没有释放的时候就访问这个对象。你已经学习过,任务可以变成阻塞状态,所以就可能出现两种情况:某个惹我怒在等待另一个任务,而后者又等待别的任务,这样一直下去,直到这个链条上的任务又在等待第一个任务释放锁。这得到了一个任务之间相互等待的连续循环,没有哪个线程恩给你继续。这被称之为  死锁 。     如果
Linux 多线程同步之哲学家用餐问题分析
有五个哲学家公用一张餐桌,分别坐在周围的五张椅子上,在餐桌上有五个碗和五只筷子,他们的生活方式是交替地进行思考和用餐。平时,一个哲学家进行思考,饥饿时便试图拿取其左右最靠近他的筷子,只有在他拿到两只筷子时才能进餐,进餐完毕,放下筷子继续思考。 思路: 选用互斥锁mutex,如创建5个, pthread_mutex_t m[5]; 模型抽象: 5个哲学家 --> 5个线程; 5支筷子 -
多线程处理哲学家就餐问题(GUI动态演示)
利用Java的多线程机制,以GUI形式动态演示解决哲学家就餐问题。
哲学家进餐问题的算法与实现
(1) 在什么情况下5 个哲学家全部吃不上饭? 考虑两种实现的方式,如下: A. 算法描述: void philosopher(int i) /*i:哲学家编号,从0 到4*/ { while (TRUE) { think( ); /*哲学家正在思考*/ take_fork(i); /*取左侧的筷子*/ take_fork((i+1) % N); /*取左侧筷子;%为取模运算*/
哲学家就餐问题——and型信号量机制
以哲学家进餐模型为依据,在Linux控制台环境下创建5个进程,用semget函数创建一个信号量集(5个信号量,初值为1),模拟哲学家的思考和进餐行为:每一位哲学家饥饿时,先拿起左手筷子,再拿起右手筷子;筷子是临界资源,为每一支筷子定义1个互斥信号量;想拿到筷子需要先对信号量做P操作,使用完释放筷子对信号量做V操作。一下为:仅当哲学家的左、右两只筷子均可用时,才允许他拿起筷子进餐;
操作系统的哲学家就餐问题
今天我们来看一下哲学家就餐问题,这是很好的检测新设计出的进程同步原语的功能和性能。 问题:有5个哲学家,他们围坐在一张圆桌旁,哲学家只有三种状态,思考,等待筷子,吃面条。每个哲学家面前有一只空盘子,每两个哲学家之间有一支筷子,共五支筷子,每个人只能拿自己旁边的筷子,哲学家只能拿到两只筷子才能吃面条,当一个哲学家饿了,他就试图拿他最近的两支筷子,每次只能拿一支,次序不限,当他成功拿到两支筷
信号量 哲学家进餐问题
linux环境下加gcc [文件名] -lpthread编译成功,运行时出现错误结果,相邻进程会同时进餐。发现是前一个进程修改之前,后一个在判断,同时修改chopstick数组,把数组某个元素的值该到了-1.所以需要改进。
【操作系统】“哲学家进餐”问题
“哲学家进餐”问题有五个哲学家,他们的生活方式是交替地进行思考和进餐。他们共用一张圆桌,分别坐在五张椅子上。在圆桌上有五个碗和五支筷子,平时一个哲学家进行思考,饥饿时便试图取用其左、右最靠近他的筷子,只有在他拿到两支筷子时才能进餐。进餐完毕,放下筷子又继续思考。哲学家进餐问题可看作是并发进程并发执行时处理共享资源的一个有代表性的问题。此算法可以保证不会有相邻的两位哲学家同时进餐。若五位哲学家同时饥饿
哲学家就餐问题(C语言实现)
场景: 原版的故事里有五个哲学家(不过我们写的程序可以有N个哲学家),这些哲学家们只做两件事--思考和吃饭,他们思考的时候不需要任何共享资源,但是吃饭的时候就必须使用餐具,而餐桌上的餐具是有限的,原版的故事里,餐具是叉子,吃饭的时候要用两把叉子把面条从碗里捞出来。很显然把叉子换成筷子会更合理,所以:一个哲学家需要两根筷子才能吃饭。 现在引入问题的关键:这些哲学家很穷,只买得起五根筷子。他们
关闭
关闭