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

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

Реклама

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

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

Это требование можно выполнить с использованием подхода, аналогичного применяемому в сервере с предварительным ветвлением, создав глобальный xеш % STATUS, с помощью которого главный поток сервера мог бы вести контроль, а все прочие потоки могли вносить изменения. Таким образом можно осуществлять получение, например, страницы с информацией о шинах http://ek.ua/list/337/nokian/ с контролируемым обслуживанием потока. В отличие от сервера с предварительным ветвлением, в данном случае нет необходимости использовать каналы или разделяемую память для поддержки хеша в актуальном состоянии. Поскольку все потоки работают в одном и том же процессе, они могут вносить изменения в хеш % STATUS непосредственно, если будут приняты соответствующие меры по синхронизации их доступа к хешу путем его блокировки перед внесением изменений.

Ключами хеша %STATUS являются идентификаторы потоков (TID — thread identifier), а возможными значениями — строки “busy”, “idle” или “goner”. Первые два кода состояния имеют такой же смысл, как и в серверах с предварительным ветвлением. Третий код состояния будет описан позже. Чтобы упростить управление хешем %STATUS, можно применить небольшую подпрограмму status (), которая позволяет потокам проверять и изменять хеш, не нарушая работу других потоков. Получив значение TID, подпрограмма status () возвращает состояние указанного потока.

my $tid = Thread->self->tid;

шу $status = status($tid);

При вызове с двумя параметрами подпрограмма status () изменяет состояние потока.

status($tid => 'busy');

Если второй параметр имеет значение undef, подпрограмма status () полностью удаляет указанный поток из хеша % STATUS.

В каждом цикле accept () рабочего потока подпрограмма status () вызывается для установки состояния текущего потока в значение “idle” перед вызовом функции accept () и в значение “busy” — после приема соединения.



2014-12-25 14:49:48

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


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


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


РЕКОМЕНДУЕМ

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