В статье Дейкстры «Смиренный программист» он упоминает, что дал волонтерам задачу, которую нужно решить:
«Я провел небольшой программный эксперимент с действительно опытными волонтерами, но случилось нечто совершенно непреднамеренное и совершенно неожиданное. Никто из моих добровольцев не нашел очевидного и самого элегантного решения. После более тщательного анализа выяснилось, что у них есть общий источник: их представление о повторении было настолько тесно связано с идеей связанной контролируемой переменной, которую нужно усилить, что они были умственно заблокированы от того, чтобы видеть очевидное. Их решения были менее эффективными, излишне трудными для понимания, и им потребовалось очень много времени, чтобы найти их ».
В чем заключалась проблема, которую Дейкстра дала волонтерам? Какие были решения?
источник
Ответы:
«Проблема столовых философов» была представленной проблемой.
Это имеет свои корни в параллельных системах и является типичным университетским вопросом, обсуждаемым при обсуждении параллелизма.
Я полагаю, что 4 или 5 «официальных» алгоритмов были разработаны для решения проблемы, но быстрый поиск в «Google» для «Обеденной философской проблемы» даст вам множество результатов.
Для получения подробной информации по этой проблеме от Standford U, пожалуйста, посетите: http://academicearth.org/lectures/dining-philosopher-problem
Статья в Википедии находится по адресу: http://en.wikipedia.org/wiki/Dining_philosophers_problem.
Решение от MSDN Magizine находится по адресу: http://msdn.microsoft.com/en-us/magazine/dd882512.aspx
Если вы читаете оригинальную версию статьи в сносках на стр. 866, в ней говорится: «Труды Конгресса IFIP 1965, 213-217.« Решение проблемы в управлении параллельным программированием ».
Проблема параллелизма и общих ресурсов - это «проблема столовых философов». :-)
Надеюсь, это поможет.
источник