Скажем, в очереди стоят 2 молодых человека. Появляются 3 бабушки с палочками. Все они пропускаются вперед благородными молодыми людьми, стоящими в очереди, а так как время обслуживания одной бабушки ненулевое, то вторая бабушка оказывается не "пропущенной без очереди", а "помещенной в голову очереди", а третья бабушка оказывается помещенной на второе место в очереди (если не считать стоящей в очереди ту бабушку, которая в настоящее время обслуживается), а за ней по-прежнему стоят двое молодых людей. Таким образом, бабушка оказывается примерно в середине очереди (2 из 4) %)
Заметьте, что все бабушки приняты для простоты рассмотрения одинаковыми. А если в этот момент подойдет бабушка с двумя палочками или с маленьким ребенком, словом, с приоритетом большим, чем у третьей бабульки?
Ваш подход другими словами предполагает, что приоритетов существует только два. Такой подход существует в большой массе современных аппликаций, например, в TCP/IP стеке, с которым я сейчас вожусь. В результате возникают всякие нехорошие артефакты - к примеру, приоритет пакета на retransmission и syn-пакета оказывается одинаковым, и syn-flood вызывает тайм-аут уже открытых соединений. По хорошему же, как мне представляется, если применить старый советский подход - "тех, которые без очереди, пропускать через одного", например - то аппликация становится гораздо более жизнеспособной.
Хотя, конечно, в каждом конкретном случае надо смотреть отдельно, да.
Re:
Date: 2003-05-29 12:56 pm (UTC)Скажем, в очереди стоят 2 молодых человека. Появляются 3 бабушки с палочками. Все они пропускаются вперед благородными молодыми людьми, стоящими в очереди, а так как время обслуживания одной бабушки ненулевое, то вторая бабушка оказывается не "пропущенной без очереди", а "помещенной в голову очереди", а третья бабушка оказывается помещенной на второе место в очереди (если не считать стоящей в очереди ту бабушку, которая в настоящее время обслуживается), а за ней по-прежнему стоят двое молодых людей. Таким образом, бабушка оказывается примерно в середине очереди (2 из 4) %)
Заметьте, что все бабушки приняты для простоты рассмотрения одинаковыми. А если в этот момент подойдет бабушка с двумя палочками или с маленьким ребенком, словом, с приоритетом большим, чем у третьей бабульки?
Ваш подход другими словами предполагает, что приоритетов существует только два. Такой подход существует в большой массе современных аппликаций, например, в TCP/IP стеке, с которым я сейчас вожусь. В результате возникают всякие нехорошие артефакты - к примеру, приоритет пакета на retransmission и syn-пакета оказывается одинаковым, и syn-flood вызывает тайм-аут уже открытых соединений. По хорошему же, как мне представляется, если применить старый советский подход - "тех, которые без очереди, пропускать через одного", например - то аппликация становится гораздо более жизнеспособной.
Хотя, конечно, в каждом конкретном случае надо смотреть отдельно, да.