2014-09-29 48 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