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

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

Реклама

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

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

Иногда это выполняется непосредственно перед заверше­нием работы программы или в тот момент, когда потребуется возвращаемое значение подпрограммы, выполняемой в потоке. Если выполнение потока еще не закончено, метод jоin () блокируется до тех, пока это не произойдет.

Продолжая предыдущий пример, предположим, что в какой-то момент в основном потоке потребовалось значение числа ПИ, вычисленного в подпрограмме calculate_pi. Это можно сделать с помощью следующего вызова:

my $pi = $thread->join;

В отличие от способа организации программы с родительскими и дочерними про­цессами, при котором только родительский процесс может вызывать функцию wait () с указанием в качестве параметра одного из своих дочерних процессов, между потоками нет какой-либо строгой родительско-дочерней связи. Любой поток может вызывать ме­тод join любого другого потока, но не может вызывать метод jоin () самого себя.

Для завершения работы потока достаточно только вызвать функцию return () в выполняемой в нем подпрограмме или просто позволить потоку управления дойти естественным образом до конца блока подпрограммы. В потоках никогда не вызыва­ется функция exit () языка Perl, поскольку это может привести к уничтожению и те­кущего, и всех других потоков, а это нежелательно. К тому же, ни один поток, кроме основного, не должен предпринимать попытку установить обработчик сигнала. Нет такого способа, который бы позволил гарантировать доставку сигнала именно тому потоку, для которого он предназначен, и поэтому вполне вероятно, что такая попыт­ка приведет к аварийному завершению работы интерпретатора Perl.

Работа потока может также завершиться аварийно в результате вызова функции die () с сообщением об ошибке. Однако применение функции die () в потоке приво­дит далеко не к тому результату, на который мог рассчитывать разработчик.

2014-06-20 13:33:04

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


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


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


РЕКОМЕНДУЕМ

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