2014-09-29 22 views

回答

1

HTTPSClientSession :: abort()在套接字上调用shutdown();应导致receiveResponse()返回(更正:至throw)。

HTTP(S)ClientSession没有内部锁定,但是线程安全性并不是真正的Poco相关问题。如果在您的平台/堆栈的recv()上阻塞的套接字上调用shutdown()是安全的,那么一切都很好。

+0

你能解释一下你的意思吗?'线程安全这里并不是一个真正的Poco相关问题'?我无法访问POCO源,因此我无法确切地告诉receiveResponse和调用中止/关闭时会发生什么。 此外,我不知道如何知道是否可以在recv上阻塞的套接字上调用shutdown - 可以吗? – Schmendrick 2014-09-30 08:22:22

+0

每个人都可以访问Poco源代码,请参阅https://github.com/pocoproject/poco。 至于在被阻塞的套接字上调用shutdown是否安全,这个套接字确实不是Poco问题,因为Poco没有实现套接字,而只是包装它们,以及recv()和shutdown()如何交互可能是平台特定的(没有信息在问题的平台上)。答案解释了“引擎盖下”发生的事情。见例如这些答案: http://fixunix.com/unix/374842-shutdown-while-blocking-recv-send-select.html#post989156 http://fixunix.com/unix/374842-shutdown-while-blocking- recv-send-select.html#post990497 – Alex 2014-09-30 20:06:45

+0

@Alex由于过早的EOS,应该引起抛出,而不是因为网络异常,因为您链接的代码似乎实现。并放弃()关闭输入?它在哪里定义? – EJP 2014-09-30 22:06:03