Добро пожаловать, Гость. Пожалуйста авторизуйтесь здесь.
FGHIGate на GaNJa NeTWoRK ST@Ti0N - Просмотр сообщения в эхоконференции RU.FTN.DEVELOP
Введите FGHI ссылку:


Присутствуют сообщения из эхоконференции RU.FTN.DEVELOP с датами от 12 Jul 13 20:52:30 до 25 Apr 24 08:46:43, всего сообщений: 2456
Ответить на сообщение К списку сообщений Предыдущее сообщение Следующее сообщение
= Сообщение: 2054 из 2456 =================================== RU.FTN.DEVELOP =
От   : Nil A                            2:5015/46          21 Jan 22 03:21:56
Кому : Alexey Vissarionov                                  21 Jan 22 03:21:56
Тема : Фидодевелопмент - давайте обсуждать тут, а не по .pr и .nextgen
FGHI : area://RU.FTN.DEVELOP?msgid=2:5015/46+61ea125e
На   : area://RU.FTN.DEVELOP?msgid=2:5020/545+61da7e32
= Кодировка сообщения определена как: CP866 ==================================
==============================================================================
Hello, Alexey!

Sunday January 09 2022 09:18, from Alexey Vissarionov -> Nil A:

NA>> Как пример, Libuv вообще делает асинхронными дисковые операции,
NA>> которые на epoll() не повесишь,
AV> С чего бы вдруг? Дескриптор - он в любом случае дескриптор, а что там
AV> за ним - известно только ядру.

epoll() под низом работает с poll(), а poll() не реализован для файлов файловой системы, т.е. открытые файлы (а не сокеты) всегда возвращают готовность, поэтому, например, O_NONBLOCK для файлов бесполезен.

http://lxr.linux.no/linux+v5.14/fs/eventpoll.c#L2045
2045        /* The target file descriptor must support poll */
2046        error = -EPERM;
2047        if (!file_can_poll(tf.file))
2048                goto error_tgt_fput;

Я нейтрально отношусь к продуктам компании Facebook (Meta сейчас), но иногда они приносят общественную польщу в виде опенсорца.
Например, в 2019 году ФБ отдал в ядро Линукса io_uring интерфейс, который как раз и создан решить проблему асинхронных (дисковых) операций.
До этого в 2.6 добавили aio, но им никто не пользуется, потому что не удобно - надо открывать файлы с флагом O_DIRECT, а это отключает кэшь страниц, и надо передавать буфера выравнивать по границе памяти.
До этого можно было только O_ASYNC флаг устанавливать и ловить сигналы - ещё хуже.

AV> Еще и треды... epoll тем и хорош, что все дескрипторы обрабатываются в
AV> одном потоке.

Для сокетов и прочих eventfd - epoll рулит, но вот без обыкновенных (regular) файлов.
Кстати, сначала в 2000м в BSD появился kqueue, а потом уже в 2002ом в линуксе epoll. Можно сказать "списали".

Best Regards, Nil
--- GoldED+/LNX 1.1.5
* Origin: Linux 2.6.32-042stab145.3 (2:5015/46)

К главной странице гейта
Powered by NoSFeRaTU`s FGHIGate
Открытие страницы: 0.097656 секунды