Еще одна из цикла про устройство рантайма Go
В этой статье разбирается, как устроен сетевой поллер (netpoller) в Go - та самая магия, которая позволяет писать простой блокирующий код вроде conn.Read(), а под капотом использовать epoll, kqueue и IOCP без блокировки потоков ОС.
Автор объясняет проблему дороговизны потоков и решение через дешевые горутины, которые засыпают и просыпаются по событиям готовности сокетов, используя официантскую аналогию: вы делаете заказ и отдыхаете, а когда кухня позвонит в колокольчик, вам принесут еду. Детально показан путь блокирующего чтения, хитрая трехшаговая парковка горутин, работа с дедлайнами через рантаймовые таймеры, защита от устаревших событий с помощью счетчика поколений и взаимодействие с планировщиком. В итоге все это позволяет держать миллион соединений на горстке потоков
28.04.2026
Похожее
08.09.2026
Прокси для базы данных
Автор пишет простой такой прокси на Go в учебных целях вдохновившись статьей Fig...
07.09.2026
У нас отмена!
Статья разбирает, как пакет singleflight в Go предотвращает лавину запросов к кэ...
05.09.2026
DDD во времена AI
Статья утверждает, что с ростом AI-кодинга идеи Domain-Driven Design становятся ...
03.09.2026
Конкурентный сервер на Go
Это восьмая часть серии о конкурентных сетевых серверах, в этот раз посвященная ...