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

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

Реклама

Perl для IP-Телефонии (34 – Многопоточные приложения, часть 12)

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

На практике иногда создается впечатление, что модуль Thread::Signal способ­ствует не повышению, а понижению стабильности программ, в зависимости от при­меняемой версии Perl и библиотеки поддержки многопоточной обработки. Ре­комендуется при проведении экспериментов с многопоточными средствами вначале написать программу без модуля Thread::Signal и ввести его позже, если будут про­исходить непредвиденные сбои или другие странные явления.

Многопоточный психотерапевтический сервер.

Несмотря на то, что потокам было посвящено такое длинное введение, фактически код многопоточного сервера весьма невелик по объему. Ниже приведена многопо­точная версия психотерапевтического сервера.

    #!/usг/local/bin/per! -w   
    # Файл: eliza_thread.pl   
    use strict;   
    use IO::Socket;   
    use Thread;   
    use Chatbpt::Eliza::Server;   
    use constant PORT =>12000;   
    my $listen_socket = IO::Socket::INET->new (
LocalPort =>PORT,
    Listen =>    20,
    Proto  =>    'tcp',
    Reuse =>    1);
    die $@ unless $listen_socket;   
    warn "Listening for conneсtions … n";    
    while (my  $connection = $listen_socket->accept) {   
    Thread->new (&interact, $connection);   
    }
    sub interact {
    my $ handle = shift;   
    Thread->self->detach;   
    Chatbot::Eliza::Server->new->command interface($handle    , $handle);
    $handle->close();   
    }

Проведем анализ программы.

Строки 1-5. Загрузка модулей. Выполнение программы начинается с загрузки модулей IO::Socket и Thread. Вызывается также специализированная версия модули Chatbot::Eliza, в которой метод command_interface () был откорректирован для работы в многопоточной среде.

Строки 6-12. Создание приемного сокета. Как и в предыдущих примерах, создается новый приемный сокет с помощью метода IO::Socket::lNET->new (). Если приемный сокет не может быть создан, вызывается функция die и выводится сообщение об ошибке, оставленное модулем IO::Socket в переменной $@.



2014-06-24 14:17:38

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


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


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


РЕКОМЕНДУЕМ

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