Netpoller - компонент Go runtime, который превращает блокирующий сетевой API в неблокирующий:
// Разработчик пишет синхронный код:
conn, _ := net.Dial("tcp", "example.com:80")
data := make([]byte, 1024)
n, _ := conn.Read(data) // "блокируется"
// Под капотом Go runtime:
// 1. Сокет переводится в неблокирующий режим
// 2. При Read(): если данных нет - горутина паркуется
// 3. Сокет регистрируется в epoll/kqueue
// 4. Поток ОС (M) освобождается для других горутин
// 5. Когда данные приходят - epoll уведомляет runtime
// 6. Горутина разпарковывается и продолжает работу
Платформенные механизмы:
Благодаря netpoller один поток ОС может обслуживать тысячи горутин с сетевыми операциями. Это ключ к высокой производительности Go серверов.