1

Poco 中是否有适当的方法来中止来自另一个线程的阻塞 I/O 操作?

4

2 回答 2

0

由于执行 I/O 的线程将被阻塞,因此我看不到任何直接的方法可以取消它,除了讨厌并明确地杀死线程。但是不建议这样做

于 2012-01-25T11:11:35.123 回答
0

是的,您可以调用 Socket::shutdown()。之后会发生什么取决于您的平台,当 recv() 返回时 Poco 将抛出适当的异常。

但是你不必从阻塞 I/O 开始,因为有Poco::Net::Socket::setBlocking(bool)来启用或禁用阻塞行为。或者,即使您想进行阻塞,您仍然可以使用Poco::Net::Socket::setSendTimeout()Poco::NetSocket::setReceiveTimeout()定义超时

于 2014-10-02T02:54:45.003 回答