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

raj*_*pit 5 go grpc

我在看grpc的教程 https://grpc.io/docs/tutorials/basic/go.html

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 {
        ...
}
Run Code Online (Sandbox Code Playgroud)

我想知道我是否打电话

   client.GetFeature
Run Code Online (Sandbox Code Playgroud)

来自多个线程,它是线程安全的吗?

var*_*ius 6

通过研究这个问题你可以了解到:

@rubenv询问:

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

@iamqizhao回复:

在客户端,如果你想并行执行多个 rpc,你应该生成多个 goroutine 来执行此操作,因为 rpc 是同步/阻塞的

答案是肯定的,但是,流不能共享(来源)。

@trevorgray,根据#682 ,这些并发主题显然仍然没有记录