Что такое epoll в контексте Go?

Senior
235 просмотров
AFK Offer AI

epoll — механизм Linux для мониторинга множества файловых дескрипторов. Go netpoller использует epoll (или kqueue на macOS, IOCP на Windows) под капотом. Когда горутина блокируется на сетевом I/O, дескриптор добавляется в epoll через epoll_ctl, горутина паркуется. Отдельный тред (или sysmon) вызывает epoll_wait, который эффективно ждёт событий на тысячах дескрипторов. Когда событие приходит, соответствующая горутина возвращается в очередь шедулера. Это O(1) на событие вместо O(n) у select/poll.

Следующий вопрос

Как обработать CSV в Go?