Так селект укажет готовность только когда есть прочитанные данные
Alex Vorona wrote:
Kostya Alexandrov пишет:
А нельзя вместо aio открыть файл, и "селектом" определить что
дескриптор готов для чтения?
Alex Vorona wrote:
Igor Sysoev пишет:
On Sun, May 04, 2008 at 01:22:07PM +0300, Alex Vorona wrote:
Игорь, а использование SF_NODISKIO на FreeBSD не планируется?
Проблема в том, что от собственно SF_NODISKIO толку мало - нужно
ещё как-то
прочитать эти данные в память. Я пока вижу только один вариант -
при получении
EBUSY читать с помощью aio_read() пару байт и по получении сообщения о
завершённости операции снова вызвать sendfile.
то есть использовать aio_read как неблокирующуюся подчитывалку куска
данных с диска в кэш ОС? Почему именно 2 байта?
нужно не иметь готовый для чтения дескриптор, а прочитать с диска
данные, не заблокировавшись на чтении, и получить готовый дескриптор с
данными в кэше для передачи этих данных через уже незаблокирующийся на
диске sendfile.
кто и как будет читать эти данные? То, что данных в кэше уже нет, говорит
предыдущий sendfile, завершившийся с EBUSY. Данные надо прочитать с диска, но не
блокироваться на диске.
select имхо не очень вписывается в событийную работу nginx. И что-то
подсказывает мне, что на чтение дескриптор файла с диска всегда будет готов.