Личный кабинет    
Назад К началу Вперед Карта сайта Телефонные коды стран и городов Мира Анализатор тарифов Служб IP-Телефонии и Рейтинг

Разделы
Введение
Литература
Операторы
Оборудование
Анализатор
Сотрудничество
Печать карт
Новости
Опросник
Коды
Справка
Работа
Каталог
Хостинг
Личный кабинет

Реклама

Perl для IP-Телефонии (35 – Мультиплексные приложения, часть 1)

предыдущая часть ««»» следующая часть

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

Основная проблема при чередовании ввода-вывода таким образом состоит в возникновении предпосылок для блокировки. При попытке чтения из сокета, в котором нет данных, готовых для передачи, вызовы функций read() и sysread () блокиру­ется до получения новых данных. При обслуживании многочисленных соединений это неприемлемо, поскольку вызывает приостановку работы всех соединений в ожидании того, когда к вводу данных будет готово единственное соединение. Еще одна потенциальная проблема состоит в том, что блокируются и вызовы функций syswrite () или print (), если клиент на другом конце соединения не готов к чте­нию. В результате производительность работы всего сервера напрямую зависит от производительности самого медленного клиента.

Ключом к организации мультиплексирования является встроенная функция select ( ) и ее объектно-ориентированный эквивалент, модуль IO::Select. Функция select () позволяет проверить, будет ли операция ввода-вывода в дескрипторе файла заблокирована, еще до выполнения самой операции. Применение этих средств и будет рассмотрено далее.



2014-06-28 13:32:28

предыдущая часть ««»» следующая часть


ДОКУМЕНТАЦИЯ VoIP


НОВОСТИ СВЯЗИ


РЕКОМЕНДУЕМ

 
[ стандарты | обзор | оборудование | анализатор | коды | новости | карта | партнерам | Мы ВКонтаке ]
Запрещается копировать материалы сайта без уведомления авторов.
С вопросами и предложениями обращайтесь со страницы контактов
Copyright c 1999-2024 IPTop.Net
 
IP-Телефония, Интернет Телефония, Компьютерная телефония