如果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过去.
