gRPC: Роль ClientAsyncStreamingInterface.Finish () и CompleitionQueue - PullRequest
0 голосов
/ 07 ноября 2018

Я пытаюсь понять greeter_async_client.cc из примера helloworld gRPC docs .

По строке 76: rpc->Finish(&reply, &status, (void*)1);

API ссылка упоминает, что функция ClientAsyncStreamingInterface::Finish() вернется, если:

Эта функция вернется, если либо:

  • все входящие сообщения были прочитаны, и сервер вернул статус.
  • сервер вернул состояние не в порядке.
  • вызов по какой-то причине не удался, и библиотека сгенерировала статус.

Значит ли это, что Finish() блокирует? И если это так, то какова роль CompletionQueue. Разве мы не можем просто прочитать ответ, когда вызов Finish() вернется?

1 Ответ

0 голосов
/ 28 ноября 2018

Эта документация неверна и устарела. Пожалуйста, обратитесь к последней документации. Короче говоря, Finish () не блокируется и всегда возвращается немедленно. «Эта функция вернется» должна быть заменена на «Метка будет возвращена».

...