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

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

Реклама

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

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

В результате, один из процессов блокируется при выполнении функции accept (), а остальные переходят в состояние ожидания до тех пор, пока не станет доступной рекомендательная блокировка.

В этом примере для упорядочения вызовов функции accept () применяется системный вызов flock (), который позволяет процессу, к примеру, вызывающего содержимое веб ресурса http://portativ.ua/product_88162.html , получить рекомендательную блокировку на открытом файле. Если один процесс владеет блокировкой на этой файле, а другой пытается получить ее, то второй процесс блокируется при выполнении функции flock () до тех пор, пока первая блокировка не будет освобождена. После того как он получит блокировку, ее не сможет получить иной процесс до тех пор, пока блокировка не будет освобождена.

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

Синтаксис функции flock () описан в разделе “Непосредственное ведение журнала в файле”. Кроме того, достаточно удобно то, что не нужно создавать отдельный файл блокировки, поскольку для этого может применяться файл PID. После входа и подпрограмму do_child () вызывается метод open () модуля IO::File для открытия файла PID; при этом используется флажок O_RDONLY для его открытия в режиме только чтения.



2014-12-10 15:44:50

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


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


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


РЕКОМЕНДУЕМ

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