Исправление eao197, (текущая версия) :
опять таки традиционно у философа есть 2 метода: Eat() и Think(), которые обозначают работу потока с использованием разделяемых ресурсов и без такового соответственно.
Повторю еще раз, специально для тимлидов.
Вопрос был вот о чем: должен ли код философа выглядеть как
while(1)
{
think();
eat();
}
while(1)
{
sleep();
think();
eat();
}
Разница тут в том, что think — это процесс захвата разделяемых ресурсов. Т.е. философ сунулся за вилкой, ее не оказалось, он задумался. Посему Eat — это работа с занятыми ресурсами, Think — это борьба за ресурсы. Может ли быть еще что-то, что делает философ, пока не борется за ресурсы и не работает с захваченными ресурсами?
Исходная версия eao197, :
опять таки традиционно у философа есть 2 метода: Eat() и Think(), которые обозначают работу потока с использованием разделяемых ресурсов и без такового соответственно.
Повторю еще раз, специально для тимлидов.
Вопрос был вот о чем: должен ли код философа выглядеть как
while(1)
{
think();
eat();
}
while(1)
{
sleep();
think();
eat();
}
Разница тут в том, что think — это процесс захвата разделяемых ресурсов. Т.е. философ сунулся за вилкой, ее не оказалось, он задумался. Посему Eat — это работа с занятыми ресурсами, Think — это борьба за ресурсы. Может ли быть еще что-то, что делает философ, пока не борется за ресурсы и не работает с захваченными ресурсами.