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

rpc Call 方法是否与服务器在同一个 go 例程中运行?

rpc Call 方法是否与服务器在同一个 go 例程中运行?

Go
BIG阳 2022-01-10 10:43:31
我的服务器:func (t *Arith) Multiply(args *Args, reply *int) error {    *reply = args.A * args.B    return nil}func main() {    arith := new(Arith)    rpc.Register(arith)    rpc.HandleHTTP()    l, e := net.Listen("tcp", ":1234")    if e != nil {        log.Fatal("listen error:", e)    }    go http.Serve(l, nil)}客户:client.Call("Arith.Multiply", args, &reply)我想然后Multiply在另一个 goroutine 中运行?在client.Call()实际调用go server.SomeFun()?
查看完整描述

1 回答

?
森林海

TA贡献2011条经验 获得超2个赞

每个 http 请求都有自己的 goroutine,这是其自身的一个属性http.Server,并net/rpc建立在它之上。

从以下文档http.Serve

Serve 在侦听器 l 上接受传入的 HTTP 连接,为每个.服务 goroutine 读取请求,然后调用处理程序来回复它们。 Handler 通常为 nil,在这种情况下使用 DefaultServeMux。

rpc.HandleHTTP

HandleHTTP 在 DefaultRPCPath 上为 DefaultServer 注册一个用于 RPC 消息的 HTTP 处理程序,并在 DefaultDebugPath 上注册一个调试处理程序。仍然需要调用 http.Serve(),通常在 go 语句中。


查看完整回答
反对 回复 2022-01-10
  • 1 回答
  • 0 关注
  • 148 浏览
慕课专栏
更多

添加回答

举报

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