1 回答
TA贡献1812条经验 获得超5个赞
一切都很好,您的处理程序针对每个请求在单独的例程中运行。看一下http.Server.Serve方法的源代码。接受循环的最后一行说:
go c.serve()
问题可能出在您的测试上。如果您通过浏览器中的多个选项卡检查行为,则匹配 URL 的请求可能会排队,而不是同时运行(即您的客户端没有使用“例程”,而不是服务器)。
尝试两种不同的浏览器,或者只使用命令行,比如curl并行测试请求。例如(在 bash 的帮助下):
$ for i in {1..5}; do time curl localhost:8080 &; done
# after ignoring some mess...
curl localhost:8080 0.00s user 0.00s system 0% cpu 10.013 total
curl localhost:8080 0.00s user 0.00s system 0% cpu 10.014 total
curl localhost:8080 0.00s user 0.00s system 0% cpu 10.012 total
curl localhost:8080 0.00s user 0.00s system 0% cpu 10.019 total
你的服务器就像一个魅力。
更新
我可以在 Chrome 47 上确认这种行为,但也注意到你可以打开多个标签,比如http://localhost:8080/test1,http://localhost:8080/test2等等,你会得到预期的结果。这表明 Chrome 中确实有一些用于匹配 URL 的排队机制。
- 1 回答
- 0 关注
- 148 浏览
添加回答
举报