如果RPC没有超时机制,如果它试图调用已关闭的服务器的RPC方法,如何“终止”RPC调用? 您可以使用 channels来实现超时模式: import "time"c := make(chan error, 1)go func() { c - client.Call("Service", a
import "time" c := make(chan error, 1) go func() { c <- client.Call("Service", args, &result) } () select { case err := <-c: // use err and result case <-time.After(timeoutNanoseconds): // call timed out }
select将阻塞,直到client.Call返回或timeoutNanoseconds过去.