原来是阻塞IO,循环接收的方式。因为即使阻塞IO,也可能没有收完就出来了。
后来,基础IO的方式改变了,在非协程模式下是阻塞IO,协程模式下是非阻塞的。
【 在 wallyz 的大作中提到: 】
: 我有点纳闷,如果“IO会长时间占用线程”,这里我理解的IO肯定是非阻塞式的IO,那非阻塞IO怎么会长时间占用线程呢?
: 即使要发的数据包特别长,在socket buffer未满的情况下,本质上也还是内存拷贝(甚至零拷贝),也是不会长时间占用线程的
: 而如果socket buffer满了,遇见EAGAIN,这时候不应该就地重试send或者sleep或者就地poll,而是应该放弃这次send,转而处理别的连接,等待之前的socket的EPOLLOUT事件之后再重新send,所以没有道理会有一个连接长时间占用线程
: ...................
--
FROM 221.218.61.*