|
|
ru.algorithms- RU.ALGORITHMS ---------------------------------------------------------------- From : Andrew Ezhguroff 2:5020/400 12 Oct 2002 23:14:52 To : Oleg Khovayko Subject : Re: Сортировка "наобо рот" -------------------------------------------------------------------------------- Привет! "Oleg Khovayko" <olegh@hotpop.com> сообщил(а): OK> Предположим, что все очереди, кроме одной-единственной, пусты, OK> а одна забита тремя десятками сообщений. OK> В этому случае твой алгоритм Это не алгоритм, а голая идея. :-) OK> устроит расстрел получателя из автомата Калашникова, так как без OK> задержек выльет на него всю очередь сообщений. Это означает, что все сообщения предназначены единственному устройству. Подобную ситуацию придется решать в любом алгоритме и простейшее лобовое решение - для каждой очереди хранить время отправки последнего сообщения. OK> Теперь рассмотрим другой прикол. Предположим, что все очереди пусты. OK> Тогда программа сьест все процессорное время на бесконечный опрос OK> состояния очередей. Еще раз - это не алгоритм, а идея. Понятно, что запускать подобный бесконечный цикл в драйвере абсурдно. Hапример, лучше использовать не массив, а список (циклический?) актуальных очередей. При этом пустая очередь исключается из списка, а очередь, сообщение из которой отправляется, перемещается в конец списка. Очередь, ставшая непустой (в результате появления нового сообщения), добавляется также в конец списка. При исчерпании списка процесс приостанавливается до появления нового сообщения. Если время после отправки предыдущего сообщения из текущей очереди слишком мало, то процесс приостанавливается на достаточное время. Можно добавлять "новые" очереди не в конец, а сортировать по времени отправки последних сообщений из очередей (что немного увеличит накладные расходы, зато первым будет получать сообщение процесс, который ждет дольше всего). OK> Если ОС однозадачная, типа MS-DOS или там RT-11SJ - это не страшно. OK> Hо любая современная ОС, так или иначе реализующая многозадачность, OK> будет серьезно подторможена зацикленым процессом. ИМХО, скорее всего будет с точностью до наоборот - в RT-11SJ драйверы работать может и будут, а вот приложение - нет. А вот в "нормальной" многозадачной среде если бесконечный цикл работает не на максимальном приоритете, то система все же будет функционировать. С уважением, Андрей. -- Отправлено через сервер Форумы@mail.ru - http://talk.mail.ru --- ifmail v.2.15dev5 * Origin: Talk.Mail.Ru (2:5020/400) Вернуться к списку тем, сортированных по: возрастание даты уменьшение даты тема автор
Архивное /ru.algorithms/6488873e3d3a.html, оценка из 5, голосов 10
|