我正在玩一些围棋,但我遇到了一个我无法解决的问题。
以下代码是重现我的问题的最不可能的代码。原始代码的目标是将 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
它的效果很好。
谁能解释发生了什么?非常感谢!