我的服務(wù)器: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()實際調(diào)用go server.SomeFun()?
1 回答

森林海
TA貢獻(xiàn)2011條經(jīng)驗 獲得超2個贊
每個 http 請求都有自己的 goroutine,這是其自身的一個屬性http.Server
,并net/rpc
建立在它之上。
從以下文檔http.Serve
:
Serve 在偵聽器 l 上接受傳入的 HTTP 連接,為每個.服務(wù) goroutine 讀取請求,然后調(diào)用處理程序來回復(fù)它們。 Handler 通常為 nil,在這種情況下使用 DefaultServeMux。
HandleHTTP 在 DefaultRPCPath 上為 DefaultServer 注冊一個用于 RPC 消息的 HTTP 處理程序,并在 DefaultDebugPath 上注冊一個調(diào)試處理程序。仍然需要調(diào)用 http.Serve(),通常在 go 語句中。
- 1 回答
- 0 關(guān)注
- 163 瀏覽
添加回答
舉報
0/150
提交
取消