gRPC C++ 异步客户端完成队列排空

gRPC C++ async client completion queue drain

我创建了一个用 C++ 编写的 gRPC 异步客户端,它使用完成队列向服务器发出流式请求和一元请求。

在客户端class的析构函数中调用了完成队列的Shutdown方法,然后我想我可以调用Next来排空队列并获取挂起的标签,而是调用 Next 阻止一切。

需要待定标签,因为它们是使用 new 创建的对象,必须删除以避免泄漏。

清空用于异步客户端的队列的正确方法是什么?

应该是 1 个标签进入完成队列,1 个标签出来,所以所有待处理的操作都将从 Next 返回它们的标签(即使 RPC 被取消)。

Next阻塞的症状可能是由于有未完成的未决事件。

您可能喜欢使用 TryCancel 快速终止通话