阅读MSDN页面,很明显,如果套接字传输层中没有内部缓冲区,发送将会阻塞。这实际上是一件好事,因为我宁愿没有NoBufferSpaceAvailable错误。我的理解是传输缓冲区空间很大,但如果发送节流阀来防止这些错误,我很高兴。套接字发送与sendasync。什么时候发送实际阻止?
但是,不清楚还有什么会导致发送阻止。我的猜测是,它不会阻塞等待发送的确认,并且发送将只将数据排队到传输缓冲区并返回。
什么是一个非常糟糕的事情是,如果一个发送确实阻塞,直到一个特定的套接字实际上完全阻塞,直到传输完成。如果是这种情况,那么千分之一的缓慢连接可能会减慢整个发送过程。在这种情况下,SendAsync真的是强制性的。
任何人都有关于此的更多细节?
如果您等待异步套接字返回某些内容(即:结果),它也会阻塞。 – DarthVader