GRPC: лучше использовать асинхронный или синхронизирующий клиентский API, когда rpc возвращает google.protobuf.Empty. ⇐ C++
-
Гость
GRPC: лучше использовать асинхронный или синхронизирующий клиентский API, когда rpc возвращает google.protobuf.Empty.
Я хочу использовать GRPC в приложении C++, где клиент отправляет rpc, в основном запускаемый по пользовательским событиям. Все эти вызовы возвращают google.protobuf.Empty, поэтому меня не интересует возвращаемое значение на стороне клиента.
Google рекомендует по возможности использовать асинхронный API в C++. Теперь в моем сценарии, когда завершение вызова все равно не обрабатывается на стороне клиента, мне интересно, буду ли я по-прежнему использовать асинхронный API, чтобы повысить производительность. В этом случае мне, вероятно, следует создать какой-то поток «сборщика мусора» с низким приоритетом, который вызывает CompletionQueue::Next, а затем ничего не делает, просто чтобы гарантировать, что очередь не будет расти неограниченно. И все же это немного похоже на излишество. В лучшем случае это будет фиктивный вариант очереди завершения, который просто отбрасывает событие по завершении, но мне ничего подобного не известно.
Я понятия не имею, насколько эффективным или неэффективным будет использование API синхронизации в моем случае. Есть ли какие-либо практические рекомендации для этого сценария?
Я хочу использовать GRPC в приложении C++, где клиент отправляет rpc, в основном запускаемый по пользовательским событиям. Все эти вызовы возвращают google.protobuf.Empty, поэтому меня не интересует возвращаемое значение на стороне клиента.
Google рекомендует по возможности использовать асинхронный API в C++. Теперь в моем сценарии, когда завершение вызова все равно не обрабатывается на стороне клиента, мне интересно, буду ли я по-прежнему использовать асинхронный API, чтобы повысить производительность. В этом случае мне, вероятно, следует создать какой-то поток «сборщика мусора» с низким приоритетом, который вызывает CompletionQueue::Next, а затем ничего не делает, просто чтобы гарантировать, что очередь не будет расти неограниченно. И все же это немного похоже на излишество. В лучшем случае это будет фиктивный вариант очереди завершения, который просто отбрасывает событие по завершении, но мне ничего подобного не известно.
Я понятия не имею, насколько эффективным или неэффективным будет использование API синхронизации в моем случае. Есть ли какие-либо практические рекомендации для этого сценария?
Мобильная версия