我的服务器:
func(t * Arith)Multiply(args * Args,reply * int)error { * reply = args.A * args.B 返回零}func main(){ arith:= new(Arith) rpc.Register(ARITH) rpc.HandleHTTP() …
每个http请求都有自己的goroutine,这是一个属性 http.Server 本身,和 net/rpc 建立在它之上。
http.Server
net/rpc
从文档中 http.Serve :
http.Serve
Serve接受侦听器l上的传入HTTP连接, 的 创建 每个人的新服务goroutine 强> 。服务goroutines读 请求然后调用处理程序来回复它们。处理程序通常是 nil,在这种情况下使用DefaultServeMux。
来自 rpc.HandleHTTP :
rpc.HandleHTTP
的 HandleHTTP在DefaultRPCPath上向DefaultServer注册RPC消息的HTTP处理程序,并在其上注册调试处理程序 DefaultDebugPath。 强> 仍然需要调用http.Serve(), 通常在go语句中。