Go grpc生成的存根是线程安全的吗?

Go grpc生成的存根是线程安全的吗?,go,grpc,Go,Grpc,我正在看grpc的教程 grpc一元呼叫看起来像这样 conn, err := grpc.Dial(*serverAddr) if err != nil { ... } defer conn.Close() client := pb.NewRouteGuideClient(conn) feature, err := client.GetFeature(context.Background(), &pb.Point{409146138, -746188906}) if err !

我正在看grpc的教程

grpc一元呼叫看起来像这样

conn, err := grpc.Dial(*serverAddr)
if err != nil {
    ...
}
defer conn.Close()
client := pb.NewRouteGuideClient(conn)
feature, err := client.GetFeature(context.Background(), &pb.Point{409146138, -746188906})
if err != nil {
        ...
}
我想知道我是否打过电话

   client.GetFeature
从多个线程来看,它是线程安全的吗?

仔细研究,您可以了解到:

询问:

我可以并行使用来自不同线程的客户端吗

答复:

在客户端上,若要并行执行多个rpc,则应 生成多个goroutine来执行此操作,因为rpc是 同步/阻塞

答案是肯定的,但是,流不能被共享()

@trevorgray,这类并发主题显然仍然存在 未记录,根据


这取决于您如何实现您的服务器接口,您必须自己完成,grpc不会为您的服务器接口生成实现you@Vardius我是说在客户端