= Сообщение: 2503 из 3553 ======================================== RU.GOLDED = От : Nil A 2:5015/46 07 Feb 23 08:33:44 Кому : Alexey Vissarionov 07 Feb 23 08:33:44 Тема : Как бы так голдед зарефакторить? FGHI : area://RU.GOLDED?msgid=2:5015/46+63e1e5e5 На : area://RU.GOLDED?msgid=2:5020/545+63e1e065 = Кодировка сообщения определена как: CP866 ================================== ============================================================================== Hello, Alexey!
Tuesday February 07 2023 08:08, from Alexey Vissarionov -> Nil A:
AV> Да, смысла в epoll() для файлов не очень много, но теоретически ничего AV> не мешало: дескрипторы - они и есть дескрипторы.
С точки зрения внешнего API, возможно, им ничто не мешало повесить и сокеты, и файлы на epoll(), но внутри там это две совершенно разные подсистемы. В файлах не возможно вообще такое, что делаешь write(10 байт), а возвращается только 5 записано, слишком много переписывать надо.
Фейсбуки несколько лет назад влили io_uring фичу в кернел, что сделало возможным делать асинхронные файловые операции, без создания пула-тредов для операций, или асинхронщины на сигналах, которую нельзя использовать практически.
AV> На 64-битных системах с околоединичной вероятностью таки можно. Жалко AV> только, что адресное пространство - это не реально доступная AV> физическая память :-)
Проверять, вернул ли malloc() NULL на x86_64 довольно бестолково :-)
AV> Если не сможет подтянуть - SIGBUS. Если полезть по указателю в дальний AV> космос - соответственно, SIGSEGV.
Всё проще, если адрес по которому обращаются не смапирован в процесс, то SIGSEGV, а если адрес валидный, но котовасия с подтягивании странички, то SIGBUS. Жирный маллок уйдёт в mmap, и там всё валидно, с точки зрения адресов как раз.
Best Regards, Nil --- GoldED+/LNX 1.1.5 * Origin: Linux 2.6.32-042stab145.3 (2:5015/46)