【操作系统总结】哲学家进餐问题
2015-05-31 13:23
288 查看
哲学家进餐问题
问题:有五个哲学家公用一张圆桌,分别坐在周围的五张椅子上,在圆桌上有五个碗和五只筷子,平时一个哲学家进行思考,饿的时候便取用左右做靠近他的筷子,只有他拿到两只筷子时才能进餐,进餐完毕继续思考利用记录型信号量解决问题
semaphore chopstick[5] = {1, 1, 1, 1, 1};//每一个筷子一个信号量 do { wait(chopstick[i]);//首先这个筷子能不能拿到,否则自我阻塞 wait(chopstick[(i + 1) % 5]);//再判断这个筷子能不能拿到,否则自我阻塞 ...... //吃 ...... signal(chopstick[i]);//释放筷子 signal(chopstick[(i + 1) % 5]);//释放筷子 ...... //继续想 }while(1)
利用AND型信号量解决问题
semaphore chopstick[5] = {1, 1, 1, 1, 1};//每一个筷子一个信号量 do { //Sswait(chopstick[(i+1) % 5], chopstick[i]);//只有有一个进程能拿到相邻的筷子就行 //开始吃 Ssignal(chopstick[(i+1) % 5], chopstick[i]);//释放筷子 //继续想 }while(1)
相关文章推荐
- java常见笔试题,易犯错误区
- INSERTION-SORT: INTRODUCTION TO ALGORITHMS
- NFS
- Hadoop学习笔记(四)---HDFS概述
- switch匹配问题
- 一个WordPress站点绑定多个域名
- JBOSS EAP 6 系列六 公共模块的jar配置到jboss的modules详细配置
- 北京的第五个月
- JBOSS EAP 6 系列六 公共模块的jar配置到jboss的modules详细配置
- MySQL 正则表达式
- DHCP服务
- 小结1
- BinTree::定义
- MERGE-SORT: INTRODUCTION TO ALGORITHMS
- 解决一个千万级别的数组引发的问题的深入剖析
- Mysql Join
- android Animation动画介绍
- 黑马程序员——集合框架详解
- PHP中内存溢出的问题
- Markdown如何满足中文阅读习惯实现首行缩进