http中的Goroutines

时间:2019-01-18 17:12:36

标签: go goroutine

我对http中的goroutine有疑问。

在下面的代码中是一个简单的Web服务器。

如果5个人访问服务器,2个人进入功能handler1(),3个人进入handler2(),则golang将创建5个goroutine或我是否需要保留字词go

例如go http.HandleFunc("/h1", handler1)

package main

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

func handler1(w http.ResponseWriter, r *http.Request) {
      fmt.Println(w, "Hello 01!")
}

func handler2(w http.ResponseWriter, r *http.Request) {
      fmt.Println(w, "Hello 02")
}

func main() {
      http.HandleFunc("/h1", handler1)
      http.HandleFunc("/h2", handler2)
      log.Fatal(http.ListenAndServe(":8080", nil))
}

1 个答案:

答案 0 :(得分:1)

无论您如何启动net/http服务器,它最终都会调用Serve,其中:

  

服务接受侦听器l上的传入连接,为每个连接创建一个新的服务goroutine 。服务goroutine读取请求,然后调用srv.Handler对其进行回复。