在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 中查看完整的客户端示例。