заметить, что если философы бу

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

заметить, что если философы будут слишком мало думать, то при попытках поесть у них возникнет конкуренция за палочки, и взаимная блокировка случится гораздо быстрее. Чтобы вам было удобнее экспериментировать, переменная ponderFactor определяет отношение между затратами времени на размышления и еду. Малые значения ponderFactor повышают вероятность взаимной блокировки. В функции Philosopher::run() все объекты Philosopher непрерывно думают и едят. Объект Philosopher думает в течение случайного промежутка времени, после чего пытается функцией take() взять правую (right) и левую (left) палочки. Далее он ест в течение случайного промежутка времени, и весь процесс повторяется заново. Вывод на консоль синхронизируется, о чем рассказывалось ранее в этой главе. Задача обедающих философов доказывает, что даже правильно работающая (на первый взгляд) программа может быть подвержена взаимным блокировкам. Чтобы вы могли убедиться в этом, аргумент командной строки изменяет долю времени, затрачиваемую философом на размышления. Если философов много или они тратят большую часть времени на раздумья, возможно, вы никогда не


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