第1个回答 2010-12-17
信号量解决哲学家进餐问题就是解决进程间的通信问题
5个哲学家对应5个进程P1,P2,P3,P4,P5,5个餐具对应5个资源信号量S1,S2,S3,S4,S5,初始值为1,
P操作首先将信号量Si减1,若Si<0,则阻塞调用进程(直到被V操作激活),并将其加入等待队列,若Si>=0,则取得餐具成功,同理再一个P操作(操作另一个信号量)取得另一餐具/被阻塞,然后进餐,完成后,V操作,将相应的信号量加1,激活等待队列的队头进程(如果有的话),同理,再一个V操作放下第一个取得的餐具!
这样的操作不能避免死锁!
第2个回答 2010-12-23
就是瓶颈现象,两个线程在一起的时候!一个CPU只能处理一个线程,,单个CPU当然同时处理不了两个线程的的!当处理两个线程或者多个线程的时候,一般是排队进去.如果有线程不愿意排队了,他们就会挤CPU,就像两个人或者多个人一起挤一个小门一样!怎么都挤不进去!这就是哲学家吃饭的问题