如何约束Go';s grpc go例行程序编号

如何约束Go';s grpc go例行程序编号,go,client,grpc,Go,Client,Grpc,我是否可以限制grpc客户端中go例程的数量?我有一个使用grpc客户端的go应用程序,我发现有相当多的go例程正在创建并不断增长。 谢谢您的帮助。如果您的问题是如何限制grpc goroutine,那是没有办法的,但我怀疑限制goroutine数量是否有任何意义。如果你达到了极限,又来了一个请求怎么办 您可以在处理程序的开头使用类似于信号量的模式,以便将并发请求限制为N个。其他请求将等待其他请求完成后再开始处理(但有超过N个goroutine,其中只有N个正在工作) 是使用通道的信号量实现。g

我是否可以限制grpc客户端中go例程的数量?我有一个使用grpc客户端的go应用程序,我发现有相当多的go例程正在创建并不断增长。
谢谢您的帮助。

如果您的问题是如何限制grpc goroutine,那是没有办法的,但我怀疑限制goroutine数量是否有任何意义。如果你达到了极限,又来了一个请求怎么办

您可以在处理程序的开头使用类似于信号量的模式,以便将并发请求限制为N个。其他请求将等待其他请求完成后再开始处理(但有超过N个goroutine,其中只有N个正在工作)


是使用通道的信号量实现。

gRPC启动goroutine中的每个请求。如果传入rpc请求的数量增加,则goroutines也会增加。我建议你看看你的rpc功能,以尽量减少你的延迟。这听起来像一个XY问题。你为什么担心围棋的次数?您的实际问题是什么?实际问题是,正如vedhavyas所描述的,gRPC为每个请求启动一个新的goroutine。当延迟很高时,我的goroutine数量就会不断增加。我想真正的问题在于rpc调用本身的延迟。出于好奇,我想知道C++ GRPC客户端的行为是什么。它有某种线程池吗?