Обработка событий

Опубликовано в Технологии > Серверные технологии Продолжение

Кроме передачи данных, программное обеспечение передачи данных в реальном времени должно обрабатывать ряд событий, возникающих асинхронно. Например, к сеансу приема звуковой трансляции в любое время может присоединиться новый слушатель, а один из уже существующих участников сеанса — выйти из него. Кроме того, отправитель может сменить кодировку. Еще более важно то, что не для всех приложений нужна информация обо всех событиях. жд перевозки грузов в Москве

В одной из возможных реализаций асинхронных событий применяется механизм предоставления интерфейса обратного вызова, при котором каждый прикладной поток предоставляет функцию, вызываемую программным обеспечением передачи данных в реальном времени при возникновении каждого события. В другом варианте реализации используется очередь событий. Для применения механизма очереди событий в приложении или в программном обеспечении уровня синхронизации динамически создается очередь и определяется набор событии, информация о которых требуется приложению. При возникновении события на уровне RTP программное обеспечение определяет тип события Т. Затем программное обеспечение проверяет каждую очередь событий и вводит копию сообщения о событии в каждую очередь, для которой затребовано получение событий типа Т.

Реализация, основанная на применении очереди событий, в меньшей степени способствует возникновению нарушений в работе по сравнению с механизмом предоставления интерфейса обратного вызова, поскольку программное обеспечение передачи данных в реальном времени не вызывает прикладной код непосредственно на выполнение. Однако и такая реализация может явиться источником проблем. В частности, если приложение создает очередь событий и не извлекает из нее сообщения о событиях, то в операционной системе в конечном итоге возникнет нехватка оперативной памяти. В процессе работы могут возникать задержки, если событие какого-то определенного типа запрашивается для слишком большого числа потоков, поскольку программное обеспечение нижнего уровня должно поместить копию события в каждую очередь.