Как отменить вызов Read () для grpc :: ClientReader в C ++? - PullRequest
0 голосов
/ 29 ноября 2018

У меня есть код, который запрашивает поток данных с grpc :: Server с grpc :: ClientReader.Основной цикл выглядит так, как показано ниже, и выполняется в отдельной задаче.Мне нужно закрыть задачу, когда деструктор, но метод Read () блокирует.Кажется, я ничего не могу сделать с mcReader, чтобы он прекратил блокировать.Я бы предпочел не использовать крайний срок, потому что данные не являются полностью периодическими, а создание достаточно большого размера для создания антистатиков все равно будет блокировать длительное время.Что мне делать?

while (mcReader->Read(&dataProductWrapper) && meTasksRunning) 
{
      // Do some work.
}

1 Ответ

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

Так что оглядываясь вокруг, я понял это.Используя grpc :: ClientContext, который передается в вызов RPC, вы можете вызвать grpc :: ClientContext :: TryCancel (), который можно отменить из другого потока.

...