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

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

Реклама

Perl для IP-Телефонии (36 – Неблокирующий ввод-вывод, часть 9)

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

Однако такая конструкция не очень эффективна, поскольку повторная запись информации в один и тот же сокет, не готовый к записи, может просто привести к повторному по­явлению ошибки EWOULDBLOCK. Так может случиться при параллельном получении информации и способах их мониторинга и локализации. Гораздо лучше включить вызов функции syswrite () в цикл select () и выполнять другую работу, пока сокет не будет готов к приему до­полнительных данных. В следующем разделе показано, как это сделать.

Применение неблокирующих дескрипторов в построчных операциях ввода-вывода

Как было описано ранее, применять функции построчного чтения в сочета­нии с функцией select () опасно, поскольку при выполнении функции select () не учитывается содержимое буферов библиотеки stdio. Еще одна проблема состоит в том, что функции построчного чтения блокируются, если невозможно считать це­лую строку, а как только блокируется любая из операций ввода-вывода, мультиплекс­ная программа приостанавливается.

Дело в том, что нужно изменить семантику вызова функции getline () так, чтобы можно было различать три разные ситуации.

1) Из дескриптора файла была успешно считана полная строка.

2) Дескриптор файла содержит признак конца файла EOF или код ошибки.

3) Дескриптор файла еще не содержит полную строку, доступную для чтения.

Стандартный оператор <> и функция getline () языка Perl хорошо справляются с ситуациями 1 и 2, но блокируются в ситуации 3. Наша задача состоит в изменении этого по­ведения так, чтобы функция getline () немедленно выполняла возврат, если не готова для чтения полная строка, и позволяла отличить этот случай от ошибки ввода-вывода.



2014-08-01 12:36:27

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


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


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


РЕКОМЕНДУЕМ

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