Почему мой веб-сервер в golang не обрабатывает одновременные запросы?

Этот простой HTTP-сервер содержит вызов time.Sleep(), который делает каждый запрос занимает пять секунд. Когда я пытаюсь быстро загрузить несколько вкладок в браузере, очевидно, что каждый запрос ставится в очередь и обрабатывается последовательно. Как я могу заставить его обрабатывать одновременные запросы?

package main

import (
   "fmt"
   "net/http"
   "time"
)

func serve(w http.ResponseWriter, r *http.Request) {
   fmt.Fprintln(w, "Hello, world.")
   time.Sleep(5 * time.Second)
}

func main() {
   http.HandleFunc("/", serve)
   http.ListenAndServe(":1234", nil) 
}

На самом деле, я нашел ответ на этот вопрос только после написания вопроса, и он очень тонкий. Я все равно публикую это, потому что я не мог найти ответ в Google. Вы видите, что я делаю неправильно?

58
задан Steve Hanov 23 May 2012 в 13:23
поделиться