当前位置: 首页 > 知识库问答 >
问题:

gRPC(Cpp)流-如果在GRPC_Impl::ServerReaderWriter::Read期间有一方挂起或忘记关闭流会发生什么?

曾骁
2023-03-14

我正在通过gRPC cpp的例子试图学习。在调试流示例时,我注意到服务器上对GRPC_Impl::ServerReaderWriter::Read的调用会阻塞,直到另一方写入或流结束。

我们应该如何使服务器足够健壮,使其能够处理在发送初始消息后挂起或忘记关闭流的客户机?

也许它发出一个RPC调用,并向我发送三条消息,但从未关闭。这个调用似乎没有超时的版本。

在这种情况下,我与所有客户机的整个通信线程不是都被阻塞了吗?

暂时还没有答案

 类似资料:
  • 如果Cadence集群关闭而工作流应该已经启动,CronWorkflow的行为是什么?当集群回来时,我们会期望工作流仍然启动吗?

  • 编辑问题,以包括所需的行为、特定问题或错误,以及重现问题所需的最短代码。这将帮助其他人回答这个问题。 我们知道:load with memory_order_acquire,store with memory_order_release但是,我发现用gcc4.8.2,open -O2时,抛出了一个编译错误,/usr/include/c/4 . 8 . 2/atomic:199:9:error:对于

  • 问题内容: 我正在尝试停止从服务器端连接到流服务器的所有客户端。其实我正在使用方法来优雅地处理它。 我正在等待通道上的信号以对gRPC执行正常停止。但是当客户端连接时会卡住。 我希望in方法可以处理它并中断for循环。如何关闭像这样的所有响应流? 问题答案: 为您的gRPC服务创建一个 全局 变量。因此,遍历各个部分: 每个gRPC服务请求都将使用此上下文(以及客户端上下文)来满足该请求 处理程序

  • 我正在处理xml,我需要每条记录发送一条消息,当我收到最后一条记录时,我关闭了kafka生产者,这里的问题是kafka生产者的发送方法是异步的,因此,有时当我关闭生产者时,它会拖曳我在某个地方读到过,我可以让制片人敞开心扉。我的问题是:这意味着什么,或者是否有更好的解决方案。 -编辑- 想象以下场景: 我们阅读标签并创建kafka生产者 对于每个元素,我们读取其属性,生成一个json对象并使用se

  • 问题内容: 我想知道如果不手动关闭流,何时关闭。我的意思是,如果引用的范围不再存在,流将被关闭吗? 请考虑以下示例方案。 在这里,一旦完成流处理,我将退出,但是反过来将继续执行该程序的程序不会终止,而是继续进行其他操作。 我没有关闭溪流。一旦对A类的引用范围结束,它会自动关闭吗?(即何时结束)?GC会照顾吗?另外,我读到,一旦流程结束,流将关闭,并且系统释放为其他进程保留的所有资源。我们如何检查流

  • 如果在java中执行关闭挂钩期间引发了未捕获的异常,jvm是否会立即退出,而不运行其余已注册的关闭挂钩(如果有)?从javadocs: 未捕获的异常通过调用线程ThreadGroup对象的uncaughtException方法在关闭钩子中处理,就像在任何其他线程中一样。此方法的默认实现将异常的堆栈跟踪打印到System.err并终止线程;它不会导致虚拟机退出或停止。 似乎其他关机挂钩应该运行...