Еще одна из цикла про устройство рантайма Go
В этой статье разбирается, как устроен сетевой поллер (netpoller) в Go - та самая магия, которая позволяет писать простой блокирующий код вроде conn.Read(), а под капотом использовать epoll, kqueue и IOCP без блокировки потоков ОС.
Автор объясняет проблему дороговизны потоков и решение через дешевые горутины, которые засыпают и просыпаются по событиям готовности сокетов, используя официантскую аналогию: вы делаете заказ и отдыхаете, а когда кухня позвонит в колокольчик, вам принесут еду. Детально показан путь блокирующего чтения, хитрая трехшаговая парковка горутин, работа с дедлайнами через рантаймовые таймеры, защита от устаревших событий с помощью счетчика поколений и взаимодействие с планировщиком. В итоге все это позволяет держать миллион соединений на горстке потоков
28.04.2026
Похожее
27.07.2026
687 ГБ аллокаций
Автор профилировал свою многопоточную реализацию Redis на Go и обнаружил, что од...
26.07.2026
HTMX с Go
Автор детально описывает свои паттерны интеграции HTMX с Go. Почитайте, там мног...
23.07.2026
Убираем ограничения
Автор разбирает продвинутый прием устранения проверки границ в горячих путях Go ...
21.07.2026
OpenTelemetry в комптайме
Разрабы OpenTelemetry объявили о первом стабильном релизе Go Compile-Time Instru...