【问题标题】:Are the grpc generated stubs thread safe?grpc 生成的存根线程安全吗?
【发布时间】:2018-04-05 01:53:00
【问题描述】:

我在看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

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

【问题讨论】:

  • 这取决于你如何实现你的服务器接口,你必须自己做,grpc不会为你生成实现
  • @Vardius 我指的是客户端

标签: go grpc


【解决方案1】:

查看issue,您可以了解到:

@rubenv问:

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

@iamqizhao回复:

在客户端,如果你想并行执行多个 rpc,你应该 生成多个 goroutine 来做到这一点,因为 rpc 是 同步/阻塞

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

@trevorgray,这类并发主题显然还在 没有记录,根据#682

【讨论】:

    猜你喜欢
    • 2011-08-24
    • 2016-01-16
    • 1970-01-01
    • 2018-06-12
    • 2010-11-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多