
В поисках идеального способа обработки асинхронного I/O на C++
Многие из нас писали асинхронный код, который помогает не блокировать потоки при ожидании ответа от процессов, сетевого соединения или устройств. Вызов с callback-функцией задействует много сущностей: и планировщик задач, и межпроцессное взаимодействие, и системные вызовы, и механизмы ядра Linux. Без асинхронных вызовов не обходятся настольные операционные системы, и их разработка требует баланса между производительностью и безопасностью. Также важно сохранить код читаемым и удобным. Меня зовут Илья Клементьев. Я разрабатываю настольную операционную систему kvadraOS Desktop на основе ChromiumOS. В этой статье я постараюсь найти ответ на вопрос: что же все-таки лучше для асинхронного кода — poll() или epoll()? И нужно ли это оборачивать в корутины C++20? Узнать ответ