forum.wfido.ru  

Вернуться   forum.wfido.ru > Прочие эхи > RU.FTN.DEVELOP

 
 
Опции темы Опции просмотра
  #11  
Старый 21.01.2022, 06:01
Nil A
Guest
 
Сообщений: n/a
По умолчанию Фидодевелопмент - давайте обсуждать тут, а не по .pr и .nextgen

Nil A написал(а) к Alexey Vissarionov в Jan 22 03:21:56 по местному времени:

Нello, 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 (!filecanpoll(tf.file))
2048 goto errortgtfput;

Я нейтрально отношусь к продуктам компании 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
Ответить с цитированием
 


Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход


Текущее время: 01:48. Часовой пояс GMT +4.


Powered by vBulletin® Version 3.8.7
Copyright ©2000 - 2024, vBulletin Solutions, Inc. Перевод: zCarot