我应该使用带有http.ListenAndServe的goroutine吗?

时间:2016-11-04 03:09:16

标签: go goroutine

如果我在用户点击网址时使用http.ListenAndServe提供回复,我是否应该将该功能中的相应操作作为goroutine触发?

例如,请说我在/

func main() {
    http.HandleFunc("/", provideMainContent)
}

func provideMainContent(w http.ResponseWriter, r *http.Request) {
    /// Bunch of code, looks up details in databases, parses, then returns
}

provideMainContent中的一堆代码是否应该包含在goroutine中,以便它不会减慢事后发生的任何潜在请求?

1 个答案:

答案 0 :(得分:8)

简短回答,否

来自http.Serve的GoDoc:

Serve accepts incoming HTTP connections on the listener l, creating a new service goroutine for each. The service goroutines read requests and then call handler to reply to them.

然而,正如@Mellow Marmot链接的问题中提到的那样,在从处理程序返回时可能会出现一些情况,您可能希望生成一个goroutine来执行某些处理,以便请求者不必等待所有要做出回应的处理。