Я хочу спросить, в каких случаях, когда нам нужно использовать флаг блокировки для дескрипторов файлов/сокетов, вместо этого мы всегда можем использовать вызов функции функции для определения дескриптора готовности. Это ссылка на программу в разделе 16.2 Unix Network Programming V1. В этой программе, почему автор устанавливает неблокирующий флаг на 3 дескрипторах stdin, stdout, socket. Он также говорит, что EWOULDBLOCK никогда не возникает. Но он также говорит, что время уменьшается с 12,3 до 6,9 секунд.Неблокирующие файловые дескрипторы Unix Сетевое программирование
ответ
Файлы:
Его хорошо открывать устройства, такие как модемы, которые необходимо некоторое время для инициализации с неблокирующим FD (ака O_NONBLOCK). Это справедливо не только для модемов, но и для многих типов символьных устройств, которые должны быть созданы для того, чтобы быть пригодными для использования, или где устройство, вероятно, блокируется до того, как сигнализирует себя как «готовое» по какой-то другой причине.
Различные QRNG (Quantum Random Number Generators) также нуждаются в этом флаге, а также различные типы контроллеров освещения, которые должны искать сверстников перед сигнализацией «ready!».
Кроме того, поскольку некоторые файловые системы пользовательского пространства предоставляют интерфейс ioctl(), который известен, чтобы заблокировать в течение нескольких секунд .. вы можете или не захотеть передать неблокирующий FD в этом случае, в зависимости от как вредный сон может быть для того времени, которое вы разрешили.
Цоколь:
Если вы хотите использовать не блокирующий I/O, а однопоточном «дворецкий», как правило, много гостей. Распространенное заблуждение здесь думает, что блок бесплатно означает блокировки свободной некоторыми мистическими средствами. Это не так. На самом деле, как правило, они не исключают другого.
- 1. Unix Сетевое программирование Разъяснение
- 2. Каковы сегменты памяти? Файловые дескрипторы?
- 3. Дескрипторы файлов и файловые дескрипторы (и C)
- 4. Как использовать заголовки в Unix Сетевое программирование
- 5. execve() и делить файловые дескрипторы
- 6. select не сохраняет файловые дескрипторы
- 7. анонимные файловые потоки, использующие дескрипторы
- 8. Кто украл мои файловые дескрипторы?
- 9. C Сетевое программирование - Winsock
- 10. Сетевое программирование?
- 11. FFmpeg и файловые дескрипторы в Android Lollipop
- 12. Разделяются ли файловые дескрипторы, когда fork() ing?
- 13. Сколько будет читать или писать файловые дескрипторы?
- 14. Открыть файловые дескрипторы в lsof as (удалено)
- 15. IOLoop.add_handler не принимает определенные файловые дескрипторы
- 16. Итерация по нескольким генераторам (файловые дескрипторы)
- 17. Сокеты, потоки и файловые дескрипторы в Linux
- 18. Для чего предназначены эти файловые дескрипторы?
- 19. Сетевое программирование в python
- 20. Linux \ BSD Сетевое программирование
- 21. Сетевое программирование абстракция, разложение
- 22. Сетевое программирование - Приложения Связь
- 23. Сетевое программирование в python
- 24. Функция C, Сетевое программирование
- 25. java сетевое программирование
- 26. Сетевое программирование UdP пакет
- 27. Delphi Сетевое программирование
- 28. Сетевое программирование в Python
- 29. Сетевое программирование с C#
- 30. Android Сетевое программирование
Не все из нас имеют доступную книгу. Просьба описать, какие измерения измеряются в программах, и о какой системе. – hillu
В Unix он измеряет транскрипт файла в основном эхо-клиента. – avd
Какой Unix и какое оборудование было использовано? Я спрашиваю об этом, потому что я подозреваю, что разница может быть меньше связана с соответствующими потоками управления программами, чем с накладными расходами системных вызовов. – hillu