【问题标题】:Goroutines in http [duplicate]http中的Goroutines [重复]
【发布时间】:2019-01-18 17:12:35
【问题描述】:

我有一个关于 http 中的 goroutines 的问题。

下面的代码是一个简单的网络服务器。

如果有5个人访问服务器,2个人进入handler1()函数,3个人进入handler2(),golang会创建5个goroutines还是需要保留字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))
}

【问题讨论】:

  • net/http 在自己的 goroutine 中处理每个传入的请求。

标签: go goroutine


【解决方案1】:

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

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

【讨论】:

    猜你喜欢
    • 2017-03-06
    • 2021-01-25
    • 2020-11-27
    • 2018-04-29
    • 2021-04-23
    • 1970-01-01
    • 2016-03-25
    • 2013-04-23
    • 2021-12-19
    相关资源
    最近更新 更多