Poco:如何从另一个线程中止阻塞套接字操作

Poco: How to abort a blocking socket operation from another thread

本文关键字:套接字 操作 线程 另一个 Poco      更新时间:2023-10-16

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

由于执行I/O的线程会被阻塞,我看不出有任何直接的方法可以进去或取消它,除了让线程变得讨厌和显式地杀死线程之外。然而,这是不建议的

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

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