为了账号安全,请及时绑定邮箱和手机立即绑定

并发http请求没有响应

并发http请求没有响应

Go
慕标琳琳 2021-05-09 16:55:39
我正在玩Go,但有一个我无法解决的问题。以下代码是重现我的问题的最少可能的代码。原始代码的目标是将http请求委托给goroutines。每个goroutine都会进行一些繁重的图像计算,并且应该做出响应。package mainimport (    "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效果很好。谁能解释这是怎么回事?非常感谢!
查看完整描述

3 回答

?
holdtom

TA贡献1805条经验 获得超10个赞

已经从“外部” goroutine(每个请求一个)中调用了该处理程序。处理程序必须在返回之前做所有必须做的事情,例如编写完整的响应。您将“过早”返回多余的go语句的b / c。请尝试简单地将“委托”的主体放在“句柄”中,并检查是否可以改善;-)


查看完整回答
反对 回复 2021-05-17
  • 3 回答
  • 0 关注
  • 256 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信