Я пытаюсь понять greeter_async_client.cc из примера helloworld gRPC docs .
По строке 76:
rpc->Finish(&reply, &status, (void*)1);
API ссылка упоминает, что функция ClientAsyncStreamingInterface::Finish()
вернется, если:
Эта функция вернется, если либо:
- все входящие сообщения были прочитаны, и сервер вернул статус.
- сервер вернул состояние не в порядке.
- вызов по какой-то причине не удался, и библиотека сгенерировала статус.
Значит ли это, что Finish()
блокирует? И если это так, то какова роль CompletionQueue
. Разве мы не можем просто прочитать ответ, когда вызов Finish()
вернется?