21.3 Блокированные и неблокированные вызовы

21.3 Блокированные и неблокированные вызовы

Когда программа читает данные из сетевого соединения, трудно предсказать заранее, как долго будет продолжаться эта операция. Программист может только дождаться полного завершения чтения или перейти на другое место в программе и периодически проверять значение переменной статуса соединения, либо разрешить программное прерывание по окончании операции.

? Вызов с последующим ожиданием называется блокированным (blocking) или синхронным (synchronous).

? Вызов с переходом на выполнение других операций называется неблокированным (nonblocking) или асинхронным (asynchronous).

В программном интерфейсе socket вызовы могут быть блокированными или неблокированными, а программист способен управлять поведением вызова.

Поделитесь на страничке

Следующая глава >

Похожие главы из других книг

Системные вызовы

Из книги Энциклопедия разработчика модулей ядра Linux автора Померанц Ори


Вызовы функций

Из книги Основы объектно-ориентированного программирования автора Мейер Бертран

Вызовы функций Вызовы функций имеют такой же синтаксис, как и вызовы процедур. Они могут быть квалифицированные и неквалифицированные: в первом случае используется нотация с многоточием. При соответствующих объявлениях класса и функций, они, например, таковы:b.fb.g(x, y,


21.4 Вызовы socket

Из книги TCP/IP Архитектура, протоколы, реализация (включая IP версии 6 и IP Security) автора Фейт Сидни М

21.4 Вызовы socket Вызовы socket подготавливают сетевое взаимодействие путем создания блоков управления пересылкой (Transmission Control Block — TCB). В некоторых изданиях процесс создания TCB называется созданием socket. Вызов socket возвращает небольшое целое число, называемое дескриптором и


21.6.1 Вызовы в серверной программе TCP

Из книги Разработка приложений в среде Linux. Второе издание автора Джонсон Майкл К.

21.6.1 Вызовы в серверной программе TCP 1. sockMain = socket (AF_INET, SOCK_STREAM, 0); Вызов socket имеет форму:дескриптор_socket = socket(адрес_домена, тип_коммуникации, протокол)Напомним, что интерфейс socket может использоваться для других видов коммуникаций, например XNS. AF_INET указывает на семейство


21.7.1 Вызовы в клиентской программе TCP

Из книги Язык программирования Си для персонального компьютера автора Бочков C. О.

21.7.1 Вызовы в клиентской программе TCP 1. sock = socket(AF_INET, SOCK_STREAM, 0);Клиент создает блок управления пересылкой ("socket") так же, как это делал сервер.2. Сервер должен инициализировать адресную структуру для использования в bind.Эта структура содержит локальный IP-адрес и номер порта


21.10.1 Вызовы в серверной программе UDP

Из книги Firebird РУКОВОДСТВО РАЗРАБОТЧИКА БАЗ ДАННЫХ автора Борри Хелен

21.10.1 Вызовы в серверной программе UDP 1. sockMain = socket(AF_NET, SOCK_DGRAM, 0);Семейство адресов — снова Интернет.2. bzero((char *)&servAddr, sizeof(servAddr));servAddr.sin_family = AF_INET;servAddr.sin_addr.s_addr = htonl(INADDR_ANY);servAddr.sin_port = 0;Вызовы инициализации адресной структуры сервера те же, что и в программе для TCP.3. bind(sockMain,


9.2. Системные вызовы

Из книги Программирование для Linux. Профессиональный подход автора Митчелл Марк

9.2. Системные вызовы В этой книге практически повсеместно упоминаются системные вызовы, которые являются фундаментальными для программного окружения. На первый взгляд, они выглядят как обычные вызовы функций С. И это не случайно; они представляют собой специальную


12.1.4. Сигналы и системные вызовы

Из книги Операционная система UNIX автора Робачевский Андрей М.

12.1.4. Сигналы и системные вызовы Часто сигналы доставляются процессу, который находится состоянии ожидания наступления некоторого внешнего события. Например, текстовый редактор часто ожидает завершения read(), чтобы возвратить ввод терминала. Когда системный


Вызовы функций

Из книги Разработка ядра Linux автора Лав Роберт

Вызовы функций Синтаксис:<выражение> (<список-выражений>)Значением <выражения> должен быть адрес функции. В простейшем случае это идентификатор функции. <Список выражений> содержит выражения, разделенные запятыми. Значение каждого из этих выражений


Рекурсивные вызовы

Из книги автора

Рекурсивные вызовы Любая функция в Си-программе может быть вызвана рекурсивно; в частности, она может вызвать сама себя. Компилятор не ограничивает число рекурсивных вызовов одной функции. При каждом вызове новые ячейки памяти выделяются для формальных параметров и


Вызовы функций

Из книги автора

Вызовы функций После установки Firebird содержит минимальный набор внутренних функций SQL. Хотя новые функции появляются время от времени, тем не менее сохраняется одно из основных достоинств Firebird: малый объем памяти, занимаемый сервером.Функциональные возможности сервера


3.4.2. Системные вызовы wait()

Из книги автора

3.4.2. Системные вызовы wait() Самая простая функция в семействе называется wait(). Она блокирует вызывающий процесс до тех пор, пока один из его дочерних процессов не завершится (или не произойдет ошибка). Код состояния потомка возвращается через аргумент, являющийся указателем


5.5.2. Системные вызовы

Из книги автора

5.5.2. Системные вызовы Сокеты являются более гибкими в управлении, чем рассмотренные выше механизмы межзадачного взаимодействия. При работе с сокетами используются следующие функции:? socket() — создает сокет;? close() — уничтожает сокет;? connect() — устанавливает соединение


Отложенные вызовы

Из книги автора

Отложенные вызовы Отложенный вызов определяет функцию, вызов которой будет произведен ядром системы через некоторое время. Например, в SVR4 любая подсистема ядра может зарегистрировать отложенный вызов следующим образом:int co_ID = timeout(void (*fn)(), caddr_t arg, long delta);где fn() определяет


Глава 5 Системные вызовы

Из книги автора

Глава 5 Системные вызовы Ядро операционной системы предоставляет набор интерфейсов, благодаря которым процессы, работающие в пространстве пользователя, могут взаимодействовать с системой. Эти интерфейсы предоставляют пользовательским программам доступ к аппаратному


Вызовы syscall

Из книги автора

Вызовы syscall Системные вызовы (часто называемые syscall в ОС Linux) обычно реализуются в виде вызова функции. Для них могут быть определены один или более аргументов (inputs), которые могут приводить к тем или иным побочным эффектам[25], например к записи данных в файл или к