Poco中是否有正确的方法可以从另一个线程中止阻塞I / O操作?
答案 0 :(得分:0)
由于执行I / O的线程会被阻塞,我没有看到任何直接的方法来取消它,除了讨厌并明确地杀死线程。但是不建议
答案 1 :(得分:0)
是的,你可以调用Socket :: shutdown()。之后发生的事情取决于你的平台,当recv()返回时,Poco会抛出适当的异常。
但是你不必开始阻止I / O,因为有Poco::Net::Socket::setBlocking(bool)来启用或禁用阻塞行为。或者,即使您想要阻止,您仍然可以使用Poco::Net::Socket::setSendTimeout()或Poco::NetSocket::setReceiveTimeout()
来定义超时