емого первым процессом, то ест

Автор admin Среда, 1 июля 2009 11:32

емого первым процессом, то есть круг замыкается. В примере DeadlockingDiningPhilosophers.cpp циклическое ожидание возникает из-за того, что каждый философ сначала пытается взять правую, а потом — левую палочку. Так как взаимная блокировка возникает лишь при соблюдении всех условий, для ее избежания достаточно предотвратить хотя бы одно условие. В нашей программе взаимные блокировки проще всего предотвращаются нарушением четвертого условия. Это условие возникает из-за того, что каждый философ пытается брать палочки в строго определенной последовательности: сначала правую, потом левую. Из-за этого возможна ситуация, когда каждый философ держит правую палочку и ждет освобождения левой, создавая ситуацию циклического ожидания. Если инициализировать последнего философа так, чтобы он сначала брал левую палочку, и только потом правую, он не помешает соседу справа взять палочку, находящуюся слева от последнего. В этом случае циклическое ожидание исключает- Итоги 591 ся. Впрочем, это всего лишь одно из возможных решений; вы также можете избавиться от взаимной блокировки, нарушая другие условия (за подробностям


Комментарии закрыты.