http.ListenAndServe处理并发的问题
来源:15-3 替换rpc的传输协议为http

慕妹3255656
2023-12-07
文档里说http.HandleFunc只是一个注册函数,ListenAndServe内置了处理并发的功能,每来一个request,都会起一个执行注册函数的goroutine。
但我实际一次发送了十个请求,发现实际上是阻塞的,所有的请求是按顺序执行的。是另外需要配置还是handleFunc写的有问题?
type HelloService struct {
}
func (s *HelloService) Hello(request string, reply *string) error {
fmt.Println("start")
time.Sleep(time.Second * 2)
*reply = "hello " + request
fmt.Println("finish")
return nil
}
func main() {
http.HandleFunc("/jsonrpc", func(w http.ResponseWriter, r *http.Request){
var conn io.ReadWriteCloser = struct {
io.Writer
io.ReadCloser
} {
ReadCloser:r.Body ,
Writer: w,
}
rpc.ServeCodec(jsonrpc.NewServerCodec(conn))
})
_ = rpc.RegisterName("HelloService", &HelloService{})
http.ListenAndServe(":1234",nil)
}
写回答
1回答
-
bobby
2023-12-07
你发一下文档的地址我看看怎么写的?
022023-12-13
相似问题