【问题标题】:Grpc async bidirectional client using c++使用c ++的Grpc异步双向客户端
【发布时间】:2020-03-08 21:47:38
【问题描述】:

我在客户端和服务器之间使用双向 grpc。我想在客户端和服务器上实现异步双向,即客户端打开一个流并开始向服务器发送任意消息,而另一个线程继续接收服务器响应。下面的这个例子演示了服务器端异步双向https://groups.google.com/forum/m/#!topic/grpc-io/DuBDpK96B14。 有没有人在客户端尝试过异步比迪?

【问题讨论】:

    标签: asynchronous client grpc bidirectional bidi


    【解决方案1】:

    https://grpc.io/docs/tutorials/async/helloasync-cpp/ 有一个包含客户端和服务器的代码实验室

    异步客户端

    要使用异步客户端调用远程方法,首先要创建通道和存根,就像在同步客户端中所做的那样。获得存根后,您可以执行以下操作来进行异步调用:

    启动 RPC 并为其创建句柄。将 RPC 绑定到 CompletionQueue。

        CompletionQueue cq;
        std::unique_ptr<ClientAsyncResponseReader<HelloReply> > rpc(
            stub_->AsyncSayHello(&context, request, &cq));
    

    要求回复和最终状态,带有唯一标签

        Status status;
        rpc->Finish(&reply, &status, (void*)1);
    

    等待完成队列返回下一个标签。一旦传递到相应的 Finish() 调用的标签被返回,回复和状态就准备好了。

        void* got_tag;
        bool ok = false;
        cq.Next(&got_tag, &ok);
        if (ok && got_tag == (void*)1) {
          // check reply and status
        }
    

    您可以在greeter_async_client.cc 中查看完整的客户端示例。

    【讨论】:

    • 好像只是教程网站的副本……
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-01-11
    • 2021-02-14
    • 2019-10-05
    • 1970-01-01
    • 2015-06-26
    • 1970-01-01
    • 2020-03-29
    相关资源
    最近更新 更多