问题描述:
有五个哲学家,他们的生活方式是交替地进行思考和进餐。他们共用一张圆桌,分别坐在五张椅子上。在圆桌上有五个碗和五支筷子,平时一个哲学家进行思考,饥饿时便试图取用其左、右最靠近他的筷子,只有在他拿到两支筷子时才能进餐。进餐完毕,放下筷子又继续思考。
约束条件
(1)只有拿到两只筷子时,哲学家才能吃饭。
(2)如果筷子已被别人拿走,则必须等别人吃完之后才能拿到筷子。
(3)任一哲学家在自己未拿到两只筷子吃饭前,不会放下手中拿到的筷子。
哲学家进餐问题是一大类并发控制问题的典型例子,涉及信号量机制、以及死锁等操作系统中关键问题的应用。
要解决“哲学家进餐问题”,就要明白以下几个名词的含义(自己的理解):
(1)高并发:指的是是一种系统运行过程中遇到的一种“短时间内遇到大量操作请求”的情况,例如对资源CPU,寄存器的请求。
(2)多线程:简单来说,多线程就是多个执行序列。就是让cpu执行下这个序列,又执行下那个序列,不停地切换,正所谓一心二用。多线程是为了同步完成多项任务,不是为了提高运行效率,而是为了提高资源使用效率来提高系统的效率。
(3)多线程死锁:所谓死锁是指多个线程因竞争资源而造成的一种僵局(互相等待),若无外力作用,这些进程都将无法向前推进。
ÿ