Книга: UNIX: разработка сетевых приложений
Модель неблокируемого ввода-вывода
Модель неблокируемого ввода-вывода
Когда мы определяем сокет как неблокируемый, мы тем самым сообщаем ядру следующее: «когда запрашиваемая нами операция ввода-вывода не может быть завершена без перевода процесса в состояние ожидания, следует не переводить процесс в состояние ожидания, а возвратить ошибку». Неблокируемый ввод-вывод мы описываем подробно в главе 16, а на рис. 6.2 лишь демонстрируем его свойства.
Рис. 6.2. Модель неблокируемого ввода-вывода
В первых трех случаях вызова функции recvfrom
данных для возвращения нет, поэтому ядро немедленно возвращает ошибку EWOULDBLOCK
. Когда мы в четвертый раз вызываем функцию recvfrom
, дейтаграмма готова, поэтому она копируется в буфер приложения и функция recvfrom
успешно завершается. Затем мы обрабатываем данные.
Такой процесс, когда приложение находится в цикле и вызывает функцию recvfrom
на неблокируемом дескрипторе, называется опросом (polling). Приложение последовательно опрашивает ядро, чтобы увидеть, что какая-то операция может быть выполнена. Часто это пустая трата времени процессора, но такая модель все же иногда используется, обычно в специализированных системах.
- 6.2. Модели ввода-вывода
- Модель асинхронного ввода-вывода
- Модель блокируемого ввода-вывода
- Сравнение синхронного и асинхронного ввода-вывода
- Включение и отключение синхронного вывода
- 7.4. Модель системы автоматизированного проектирования защиты информации
- 2. Правила вывода Армстронга
- 3. Производные правила вывода
- 5. Продукционная модель знаний
- 1.6 Драйверы и буферы ввода-вывода
- 2.3 Модель мини-драйвера IDE
- 7.1 Общая информационная модель и стандарт WBEM