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

时间:2018-04-05 01:53:01

标签: 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 {
        ...
}

我想知道我是否打电话

   client.GetFeature

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

1 个答案:

答案 0 :(得分:2)

调查此issue,您可以了解到:

  

@rubenv问道:

     

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

     

@iamqizhao回复:

     

在客户端,如果要并行执行多个rpc,则应该   因为rpc是,所以产生多个goroutine来做到这一点   同步/阻挡

答案是肯定的,但是,无法共享流(source)。

  

@trevorgray,这些并发主题显然仍然存在   没有记录,每#682