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

C++ 如何取消C+中grpc::ClientReader的Read()调用+;?,c++,c++11,grpc,C++,C++11,Grpc,我有一段代码,它使用grpc::ClientReader从grpc::Server请求数据流。主循环如下图所示,在单独的任务中运行。我需要在析构函数运行时关闭任务,但Read()方法被阻塞。我似乎无法对mcReader做任何事情来让它停止阻塞。我宁愿不使用截止日期,因为数据不是完全周期性的,并且使其足够大以进行antyhign仍然会阻塞很长时间。我该怎么办 while (mcReader->Read(&dataProductWrapper) && meTasksRu

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

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

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

A似乎合适。