Выбор ответа Junior net/http и middleware спрашивают часто обновлено

Обработчики net/http и горутины

Вопрос

Как net/http выполняет обработчики входящих запросов?

Попробуйте сами

Выберите вариант, и откроется разбор.

Показать ответ и разбор

Коротко

Правильный ответ: Каждое соединение в своей горутине, обработчики идут конкурентно. Сервер запускает горутину на каждое принятое соединение (а для HTTP/2 на каждый поток), поэтому две одновременные заявки выполнят обработчик параллельно.

Варианты ответа

  1. Все запросы обрабатываются строго по очереди в одной горутине сервера
  2. Каждое соединение в своей горутине, обработчики идут конкурентноправильный ответ
  3. Каждый запрос получает отдельный поток ОС из пула потоков
  4. В фиксированном пуле из GOMAXPROCS горутин-воркеров

Разбор

Сервер запускает горутину на каждое принятое соединение (а для HTTP/2 на каждый поток), поэтому две одновременные заявки выполнят обработчик параллельно. Глобальная мапа или счётчик без мьютекса в обработчике это гонка. Последовательной обработки, потоков ОС на запрос и фиксированного пула в net/http нет.

Ответьте сами, а не прочитайте

В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.

Термины по теме