我在我正在构建的新软件中使用grpc
作为IPC
,但我遇到了这个问题:Go中的grpc客户端植入是同步还是异步?
在互联网上冲浪我发现C ++既有实现,但在Go中缺少有关此功能的文档(除了GitHub上的问题)。
出于这个原因,我开始检查客户端代码,我发现客户端请求是由invoke
函数(here代码)创建的,似乎是同步运行的。
出于这个原因,我假设不是使用全局客户端然后传递给使用grpc函数的结构,而是应该为每个请求创建一个客户端以防止同步行为。
例如
而不是:
type Foo struct {
ClientA *grpc.Client
}
type Bar struct {
ClientB *grpc.Client
}
//Other stuff
client := createNewClient() //This function return a *grpc client
foo := Foo{client}
bar := Bar{client}
我应该为Foo
和Bar
struct的每个函数创建一个新客户端,用于执行不是线程阻塞的调用。这是对的吗?