Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/gwt/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ grpc库是否支持阻止完成队列中n个事件的完成状态?_C++_Grpc - Fatal编程技术网

C++ grpc库是否支持阻止完成队列中n个事件的完成状态?

C++ grpc库是否支持阻止完成队列中n个事件的完成状态?,c++,grpc,C++,Grpc,我们并行地发出多个异步请求,每个请求都有一个唯一的标记。我们希望阻止并等待所有这些事件成功、失败或超时完成 我们可以通过计算未完成调用的总数,并在每次从队列中弹出事件时将正在进行的调用总数减少1来实现这一点。我真的不喜欢这个 这需要在每次调用的基础上实例化完成队列(这有相当大的开销),或者重复使用队列,但确保在给定时间只有一个队列的活动用户。这意味着对于发出n个调用的m个线程,我们需要m个队列,每个队列为n个调用提供服务 我们假设队列中不会出现其他事件,从而减少飞行中的事件。我不知道这是否是保

我们并行地发出多个异步请求,每个请求都有一个唯一的标记。我们希望阻止并等待所有这些事件成功、失败或超时完成

我们可以通过计算未完成调用的总数,并在每次从队列中弹出事件时将正在进行的调用总数减少1来实现这一点。我真的不喜欢这个

  • 这需要在每次调用的基础上实例化完成队列(这有相当大的开销),或者重复使用队列,但确保在给定时间只有一个队列的活动用户。这意味着对于发出n个调用的m个线程,我们需要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执行相同的操作。

    gRPC没有支持您的案例的机制。完成队列是一个处理异步操作的低级组件,因此它主要作为一个简单队列工作。因此,您可能必须以自己的方式进行记账
    ClientInterceptor
    可能有助于跨不同的RPC执行相同的操作