Ale*_*tof 9 c++ windows thrift
我在Windows上使用C++中的Apache thrift,我想请求您帮助取消正在进行的阻塞读取操作.读取操作(例如 - TProtocol :: readByte)将被阻止,直到收到数据.当我从另一个线程关闭传输时,我得到一个关于空指针的失败断言.
有没有其他方法可以取消阻止的读取操作?
假设您在Windows上运行(根据您问题上的标签):您可以取消阻塞套接字操作WSACancelBlockingCall
(尽管此操作已弃用,但它仍然可以工作).然后您的套接字将返回错误代码WSAEINTR
(中断函数调用)而不是WSAETIMEDOUT
.
在Thrift中,您可以使用TSocket :: getSocketFD()或TPipe :: getPipeHandle()来获取取消当前操作的相应句柄.