Как опросить CompletionQueue при реализации C ++ grp c asyn c клиента? - PullRequest
0 голосов
/ 02 апреля 2020

Я работаю над моделью, которая отправляет несколько клиентских запросов rp c на несколько узлов. Поток, который запускает эти запросы, запускается на oop асинхронной платформы (libuv), которая также выполняет другие действия и поэтому не может блокировать ожидание результата.

Для этого я использую асинхронный C ++ клиентская модель для отправки нескольких запросов и их привязки к CompletionQueue. Затем необходимо проверить CompletionQueue на наличие каких-либо завершений без каких-либо блокировок.

Я знаю, что метод CompletionQueue :: AsyncNext можно использовать для указания крайнего срока, но то, что происходит, когда задан конечный или последний крайний срок, не документированы. Позволит ли вам эффективно опросить CompletionQueue или он сразу же завершится ошибкой и вернется после истечения крайнего срока? Если это второй случай, есть ли другой известный способ опроса завершения запросов?

1 Ответ

0 голосов
/ 08 апреля 2020

Опрос блоков завершения завершения. Возможно, не было бы идеальным делать прямой опрос с крайним сроком в потоке libuv. Это может заблокировать все событие l oop. Вместо этого вы можете создать другой поток, посвященный опросу. Если он извлекает какое-либо событие из Core, он регистрирует обратный вызов в libuv для его обработки.

Мгновенный срок может повлиять на производительность приложения.

...