C++ 如何在实现C+时轮询CompletionQueue+;grpc异步客户端?

C++ 如何在实现C+时轮询CompletionQueue+;grpc异步客户端?,c++,asynchronous,client,grpc,C++,Asynchronous,Client,Grpc,我正在研究一个将多个客户端rpc请求发送到多个节点的模型。启动这些请求的线程在异步框架(libuv)的循环上运行,该框架也在做其他事情,因此无法阻止等待结果 这样,我使用异步C++客户端模型发送多个请求并将它们绑定到一个CuleTeNoWrand。然后需要的是检查CompletionQueue是否有任何完成,而无需阻塞 我知道CompletionQueue::AsyncNext方法可用于指定截止日期,但没有记录在给定即时/过去截止日期时发生的情况。它是否有效地允许您轮询CompletionQue

我正在研究一个将多个客户端rpc请求发送到多个节点的模型。启动这些请求的线程在异步框架(libuv)的循环上运行,该框架也在做其他事情,因此无法阻止等待结果

这样,我使用异步C++客户端模型发送多个请求并将它们绑定到一个CuleTeNoWrand。然后需要的是检查CompletionQueue是否有任何完成,而无需阻塞


我知道CompletionQueue::AsyncNext方法可用于指定截止日期,但没有记录在给定即时/过去截止日期时发生的情况。它是否有效地允许您轮询CompletionQueue,或者它会立即失败并在超过截止日期后返回?如果是第二种情况,是否有其他已知方法轮询请求的完成?

轮询完成队列阻塞。在libuv线程中使用截止日期直接进行轮询可能并不理想。它可能会阻塞整个事件循环。相反,您可能希望生成另一个专用于轮询的线程。若它从核心获取了任何事件,那个么它会在libuv中注册一个回调来处理它


即时截止日期可能会影响应用程序的性能。

轮询完成队列会阻塞。在libuv线程中使用截止日期直接进行轮询可能并不理想。它可能会阻塞整个事件循环。相反,您可能希望生成另一个专用于轮询的线程。若它从核心获取了任何事件,那个么它会在libuv中注册一个回调来处理它

即时截止日期可能会影响应用程序的性能