C ++ gRPC线程号配置

Yuk*_*uki 5 c++ grpc

gRPC服务器/客户端是否具有用于连接的线程池的任何概念?可以重用线程,预分配线程,达到线程限制的队列请求等。

如果没有,它是如何工作的,是否只是在需要时分配/销毁线程,而没有任何限制和/或重用?如果是,是否可以进行配置?

小智 7

这取决于您使用的是同步 API 还是异步 API。对于同步客户端,您的 RPC 调用会阻塞调用线程,因此它并不真正相关。对于同步服务器,有一个处理所有传入请求的内部线程池,您可以使用grpc::ResourceQuotaaServerBuilder来限制线程池使用的最大线程数。

对于异步客户端和服务器,gRPCCompletionQueue用作用户定义自己的线程模型的一种方式。构建客户端和服务器的常用方法是使用用户提供的CompletionQueue::Next线程池在每个线程中运行。然后一旦它从Next调用中获得一些标记,您就可以将其转换为用户定义的类型并运行一些方法来处理状态。在这种情况下,用户可以完全控制正在使用的线程。

注意 gRPC 确实创建了一些内部线程,但它们不应用于大部分 rpc 工作。