http://catpad.livejournal.com/ ([identity profile] catpad.livejournal.com) wrote in [personal profile] catpad 2007-04-04 12:51 am (UTC)

Re: Про философов

На самом деле, в этой конкретной программе starvation удаётся избежать за счёт того, что философ "думает" после того, как положил вилки на стол. Что, конечно, не является строгим решением.
Строгое решение предписывает не просто будить своих соседей, а проверять, что каждый из соседей 1) голоден (т.е. не находится в состоянии thinking или eating), и 2) обе вилки голодного соседа свободны. Причём философ не просто будит соседа, отвечающего этим условиям, а ещё и сам выставляет его состояние в "eating". То есть, в этом случае, вместо посылания сообщения WakeUp (которое неизвестно ещё когда придёт), мне нужно было бы просто менять переменную внутри объекта Philosopher, а я хотел этого избежать.
Моё решение можно считать lightweight и не строгим. Хотя статистическая проверка показывает, что все философы едят примерно одинаковое количество раз.

Post a comment in response:

This account has disabled anonymous posting.
If you don't have an account you can create one now.
HTML doesn't work in the subject.
More info about formatting