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

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

Реклама

Perl для IP-Телефонии (39 – предобработка мультипроцессов, часть 18)

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

Второй недостаток устранить немного сложнее. При попытке выполнения функци accept () с одним и тем же сокетом несколькими процессами, они переводятся в cocтояние ожидания до тех пор, пока не появится входящий запрос на установление соединения, например, для получения контента страницы http://comfy.ua/smartfon-lenovo-s850-white.html с описанием Смартфона Lenovo S850 White. В этот момент активизируются сразу все процессы, которые конкурируют между собой  на  получение права выполнить функцию accept (). Даже в самом лучшем случае это может вызвать перегрузку операционной системы, поскольку одновременно активизируется большое число процессов, которые начинают конкурировать за ограниченный пул системных ресурсов. Этот феномен образно называют "несущимся стадом”.

Проблема усугубляется также тем, что некоторые операционные системы, в частности Solaris, запрещают вызывать функцию accept ( ) с одним и тем же сокетом по скольким процессам. При попытке выполнить это функция accept ( ) возвращает сообщение об ошибке. Поэтому сервер с предварительным ветвлением такого типа не сможет работать в подобных системах.

К счастью, для решения проблемы “несущегося стада” и проблемы возникновения ошибки при многократном вызове функции accept () может применяться простой способ. Он состоит в упорядочении вызовов функции accept () с тем, чтобы эту функцию в любой заданный момент времени мог вызвать только один дочерний процесс. В этом случае процессы конкурируют за доступ к системному ресурсу, который характеризуется низкими издержками, а также, как правило, за рекомендательную блокировку файла, прежде чем один из них сможет получить возможность вызвать функции accept (). Процессу, получившему блокировку, разрешается вызвать функцию accept (), после чего он освобождает эту блокировку.

2014-12-10 15:38:23

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


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


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


РЕКОМЕНДУЕМ

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