2009-11-14 4 views
1

Я хочу спросить, в каких случаях, когда нам нужно использовать флаг блокировки для дескрипторов файлов/сокетов, вместо этого мы всегда можем использовать вызов функции функции для определения дескриптора готовности. Это ссылка на программу в разделе 16.2 Unix Network Programming V1. В этой программе, почему автор устанавливает неблокирующий флаг на 3 дескрипторах stdin, stdout, socket. Он также говорит, что EWOULDBLOCK никогда не возникает. Но он также говорит, что время уменьшается с 12,3 до 6,9 секунд.Неблокирующие файловые дескрипторы Unix Сетевое программирование

+0

Не все из нас имеют доступную книгу. Просьба описать, какие измерения измеряются в программах, и о какой системе. – hillu

+0

В Unix он измеряет транскрипт файла в основном эхо-клиента. – avd

+0

Какой Unix и какое оборудование было использовано? Я спрашиваю об этом, потому что я подозреваю, что разница может быть меньше связана с соответствующими потоками управления программами, чем с накладными расходами системных вызовов. – hillu

ответ

1

Файлы:

Его хорошо открывать устройства, такие как модемы, которые необходимо некоторое время для инициализации с неблокирующим FD (ака O_NONBLOCK). Это справедливо не только для модемов, но и для многих типов символьных устройств, которые должны быть созданы для того, чтобы быть пригодными для использования, или где устройство, вероятно, блокируется до того, как сигнализирует себя как «готовое» по какой-то другой причине.

Различные QRNG (Quantum Random Number Generators) также нуждаются в этом флаге, а также различные типы контроллеров освещения, которые должны искать сверстников перед сигнализацией «ready!».

Кроме того, поскольку некоторые файловые системы пользовательского пространства предоставляют интерфейс ioctl(), который известен, чтобы заблокировать в течение нескольких секунд .. вы можете или не захотеть передать неблокирующий FD в этом случае, в зависимости от как вредный сон может быть для того времени, которое вы разрешили.

Цоколь:

Если вы хотите использовать не блокирующий I/O, а однопоточном «дворецкий», как правило, много гостей. Распространенное заблуждение здесь думает, что блок бесплатно означает блокировки свободной некоторыми мистическими средствами. Это не так. На самом деле, как правило, они не исключают другого.

+0

Я задаю разницу между использованием флажка выбора/установки Неблокирующего флага. – avd

+0

Есть ли какое-то простое приложение? U упомянул комплексные приложения. – avd

Смежные вопросы