如何取消C++中grpc::ClientReader的Read()调用



我有一段代码,它使用grpc::ClientReader从grpc:服务器请求数据流。主循环如下所示,并在一个单独的任务中运行。当析构函数时,我需要关闭任务,但Read((方法正在阻塞。我似乎无法对mcReader做任何事情来阻止它。我宁愿不使用截止日期,因为数据不是完全周期性的,并且使其足够大以进行签名仍然会阻塞很长时间。我该怎么办?

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

所以环顾四周,我发现了它。使用传递到RPC调用中的grpc::ClientContext,您可以调用grpc::ClientContext::TryCancel((,您可以从另一个线程取消。

最新更新