如何解决grpc库是否支持阻止来自完成队列的n个事件的完成状态?
我们并行发出多个异步请求,每个请求都有一个唯一的标记。我们希望阻止并等待所有这些事件成功完成,失败或超时。
我们可以通过计算未完成的呼叫总数,并在每次从队列中弹出事件时将运行中的总数减少1来实现此目的。我真的不喜欢这样。
-
这需要根据每个调用实例化完成队列(这会产生大量开销),或者我们需要重用一个队列,但要确保给定队列中只有1个活动用户时间。这意味着对于m个线程进行n次调用,我们需要m个队列(每个服务n次调用)。
-
我们在假设没有其他事件来自队列的情况下进行递减。我不知道这是否可以保证。
int inFlight = 10; // e.g. with dummy data while(cq->Next(&tag,&ok) { inFlight--; if (inFlight == 0) break; /// process... }
是否有一种方法可以阻止并等待库支持的n个标记的异步事件完成?
在对队列进行多路复用时是否可以阻止并等待这些事件?
解决方法
gRPC 没有支持您的案例的机制。完成队列是一个处理异步操作的低级组件,所以它主要作为一个简单的队列工作。因此,您可能必须管理自己的簿记方式。 ClientInterceptor
可能有助于在不同的 rpc 中执行相同的操作。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。