Философский алгоритм синхронизации - PullRequest
0 голосов
/ 14 июля 2010

Я читал новые материалы, я узнал термин «Алгоритм синхронизации философов», но я не мог его понять Может кто-нибудь помочь мне понять, что это такое?

Спасибо

1 Ответ

1 голос
/ 14 июля 2010

Это лишь один из многих примеров, используемых для описания того, что может происходить в параллельном мире, в котором у вас есть множество сущностей, которые могут выполнять действия над общими объектами, не заботясь друг о друге.

Проблема проста:у вас X философов, расположенных за круглым столом (с вымышленным блюдом для спагетти, которое нужно съесть каждое), и X вилок, по одному между каждой парой философов.

Правила игры предполагают, что философнужны две вилки, чтобы можно было потреблять его спагетти, и пример показывает, как простое позволение любому из них попробовать есть, не заботясь о ком-либо другом, может привести к

  • взаимоблокировкам : каждыйфилософ берет свою левую вилку, а затем все ждут другой, но ни один эгоистичный философ не уронит его, поэтому они будут ждать вечно
  • голод : нет никакой гарантии, что любой философ в конечном итоге сможет есть (проверьте страницу Википедии для точного объяснения почему)
  • livelocks : еще один классический пример .. если правило налагает на phils попытку получить второй форк после получения первого в течение максимум 5 минут, то отпустите уже приобретенный, который вы можете иметьситуация, в которой все они точно синхронизированы, и они продолжают брать одну ветвь и отпускать ее по истечении времени

В вашем вопросе вы четко говорите об алгоритме, связанном с этой проблемой (поэтому я предполагаю, что алгоритмпредназначен для решения только что описанных проблем), Википедия предлагает 4 из них здесь .

...