Что такое Network poller в Go

«Что такое Network poller в Go» — вопрос из категории Golang, который задают на 23% собеседований Golang Разработчик. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

Network poller в Go — это внутренний механизм рантайма, который отвечает за эффективное управление сетевыми операциями ввода-вывода (I/O). Он позволяет горутинам не блокироваться на сетевых вызовах, делегируя ожидание операционной системе через интерфейсы вроде epoll (Linux), kqueue (BSD), IOCP (Windows).

Когда горутина выполняет блокирующую сетевую операцию (например, net.Conn.Read()), рантайм автоматически регистрирует файловый дескриптор в network poller и переключается на другую горутину. Как только данные готовы, poller возобновляет работу ожидающей горутины.

Пример:

conn, _ := net.Dial("tcp", "example.com:80")
buf := make([]byte, 1024)
n, _ := conn.Read(buf)  // Здесь горутина "блокируется", но рантайм переключает контекст
fmt.Println(string(buf[:n]))

Это ключевой компонент для высокой производительности сетевых приложений в Go.