Другой интересный тип очередей -многопоточная очередь (multi-headed queue).
Элементы, как обычно, вводятся в конец очереди, но очередь имеет несколько пе-
редних концов (front end), или голов (head). Программа может удалять элементы из
любой головы.
Примером многопоточной очереди в реальной жизни является очередь клиен-
тов в банке. Все клиенты стоят в одной очереди, но обслуживаются несколькими
кассирами. Освободившийся банковский работник выполняет заказ клиента, ко-
торый находится в очереди первым. Такой порядок кажется справедливым, пото-
му что клиенты обслуживаются в порядке прибытия. Это очень эффективно, по-
скольку все кассиры заняты, пока есть клиенты.
Сравните этот тип очереди с множеством обычных очередей в супермаркете.
Здесь люди не обязательно обслуживаются в порядке прибытия. Покупатель в мед-
ленно двигающейся очереди может прождать дольше, чем тот, который прибыл
позже, но оказался в очереди, которая движется быстрее. Кассиры также могут
быть не всегда заняты, ведь какая-либо очередь может оказаться пустой, тогда как
в других еще будут находиться покупатели.
В общем случае многопоточная очередь более эффективна, чем несколько од-
нопоточных. Последние используются в супермаркетах потому, что тележки для
покупок занимают много места. В многопоточной очереди все покупатели должны
были бы построиться друг за другом. Когда кассир освободится, покупателю при-
шлось бы перемещаться к нему с громоздкой тележкой вдоль всего переднего края
отдела, что нежелательно. В банке же посетители, как правило, не обременены по-
купками, поэтому легко могут уместиться в одной очереди.
Очереди на регистрацию в аэропорту иногда представляют собой комбинацию
этих двух вариантов. Хотя пассажиры везут большой багаж, авиакомпании все же
предпочитают многопоточные очереди, поэтому приходится отводить дополни-
тельное место, чтобы пассажиры могли образовать одну колонну.
Можно легко построить многопоточную очередь с помощью обычной. Сохра-
ните элементы, представляющие клиентов, в однопоточной очереди. Когда агент
(банковский служащий, кассир и т.д.) освобождается, удалите первый элемент из
начала очереди и присвойте его этому агенту.
Опубликовал Kest
October 18 2009 14:22:09 ·
0 Комментариев ·
8536 Прочтений ·
• Не нашли ответ на свой вопрос? Тогда задайте вопрос в комментариях или на форуме! •
Комментарии
Нет комментариев.
Добавить комментарий
Рейтинги
Рейтинг доступен только для пользователей.
Пожалуйста, залогиньтесь или зарегистрируйтесь для голосования.
Нет данных для оценки.
Гость
Вы не зарегистрированны? Нажмите здесь для регистрации.