我正在玩Go,但有一个我无法解决的问题。
以下代码是重现我的问题的最少可能的代码。原始代码的目标是将http请求委托给goroutines。每个goroutine都会进行一些繁重的图像计算,并且应该做出响应。
package main
import (
"fmt"
"runtime"
"net/http"
)
func main() {
http.HandleFunc("/", handle)
http.ListenAndServe(":8080", nil)
}
func handle(w http.ResponseWriter, r *http.Request) {
// the idea is to be able to handle several requests
// in parallel
// the "go" is problematic
go delegate(w)
}
func delegate(w http.ResponseWriter) {
// do some heavy calculations first
// present the result (in the original code, the image)
fmt.Fprint(w, "hello")
}
如果是,go delegate(w)我没有回应,没有回应,go效果很好。
谁能解释这是怎么回事?非常感谢!
holdtom
相关分类