这与异步客户端到服务器调用无关。这是关于gRPC服务器编程模型的。为了最大化gRPC服务器的吞吐量,希望gRPC服务器将收到的请求委托给非gRPC线程,并为每个请求提供回调。当非gRPC线程完成工作时,它们通过为这些异步处理的请求调用配备的回调,通知gRPC服务器响应gRPC客户端。grpc有可能吗?我注意到回调机制具有实验性功能。但是,实验性功能不是我的项目的选择。
或者,换句话说,1)如何通过耗时的请求处理来阻止gRPC服务器线程?
C ++服务器具有两个可用的线程模型:sync和async。大多数用户将希望使用同步模型:服务器将具有一个(内部)线程池,该线程池将多路复用请求管理到一定数量的线程上(在请求之间重用线程)。异步模型允许您带来自己的线程模型,但是使用起来有点棘手-在这种模式下,当服务器准备好它们时,您将请求新的调用,而在没有工作要做的情况下,则阻塞完成队列。通过安排何时阻塞完成队列以及在哪些完成队列上发出请求,您可以安排各种线程模型。
[https://groups.google.com/g/grpc-io/c/Cul6fd7cOB0/m/c5gndkNpGQAJ已详细讨论了两种同步/异步服务器模型。