2016-11-04 89 views
0

如果我使用http.ListenAndServe在用戶點擊URL時提供響應,我是否應該將函數中的相應操作作爲goroutine來觸發?我應該使用http.ListenAndServe使用goroutines嗎?

例如,說我在聽/

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中被包裹,因此不會減慢事後說來任何潛在的請求?

+2

ListenAndServe()方法爲你做,我們不必處理,只記得每個處理程序運行在不同的goroutine –

回答

6

簡短的回答,沒有

GoDoc從http.Serve

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鏈接的問題中提到,有可能是,你可能要產生一個夠程做一些案件在從處理程序返回時進行處理,以便請求者無需等待所有處理來完成響應。