![](https://csdnimg.cn/release/download_crawler_static/86761284/bg5.jpg)
餐具的使用情况。即设计一个能安排哲学家正常生活的程序。
为哲学家设计3种状态,即“等待”“进餐”“思考”。每个哲学家
重复进行“等待”->“进餐”->“思考”的行动循环。其中:
“等待”-
>“进餐”:只有一个哲学家处于等待进餐状态,且左右手两边的餐
具都处于“空闲”状态时,能够发生这种状态改变。此状态改变发
生后,哲学家拿起左右手两边的餐具。
“进餐”-
>“思考”:此状态改变发生后,哲学家放下左右手上的餐具。餐具
状态由“使用中”转变为“空闲”。
“思考”->“等待”:哲学家思考结束后,无条件转入等待状态。
由上所述,程序中应设置6个元素的信号量数组,tools[6],
用来保持哲学家之间的同步。
2.2 临界区互斥编程原理
不论是硬件临界资源,还是软件临界资源,多个进程必须互
斥地对它进行访问。每个进程中访问临界资源的那段代码称为临
界区(Critical Section)。
每个进程中访问临界资源的那段程序称为临界区(Critical
Section)(临界资源是一次仅允许一个进程使用的共享资源)。