ALL > Computer and Education > courses > university courses > undergraduate courses > Operating System > ZSTU class(2019-2020-1) > student directories >
homework-4 Version 0
👤 Author: by 1798570839qqcom 2019-10-07 07:16:27
问题演示:

在一个圆桌旁坐着五位哲学家,每两位哲学家之间有一根筷子,一共五把。哲学家们认为,当他们饿了的时候,他们会拿起两面的筷子吃饭。只有拿了两根筷子,他们才能开始进食。显然,如果一个哲学家想吃东西,如果他的任何邻居都在吃东西,他就不能吃东西,而且筷子不够用(一根筷子还是没有一根筷子)。

解:

无效的哲学家(i)

{

    而(真)

    {

        P(筷子[i]);

        P(筷子[(i + 1)%5]);

        吃();

        V(筷子[i]);

        V(筷子[(i + 1)%5]);

        认为();

    }

}

我代表第i个哲学家(0、1、2、3、4、5)。该程序的核心思想是使用PV操作让哲学家等到左右两侧的筷子可以自由再次开始进食,然后在进食后将筷子放回原处。

问题:上述解决方案有一个缺点:当所有哲学家都想同时就餐时,就会发生僵局并永远等待(饥饿)。

Please login to reply. Login

Reversion History

Loading...
No reversions found.