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 
相似问题