摘要: select的不足 尽管select用起来挺爽,跨平台的特性。但是select还是存在一些问题。select需要遍历监视的文件描述符,并且这个描述符的数组还有最大的限制。随着文件描述符数量的增长,用户态和内核的地址空间的复制所引发的开销也会线性增长。即使监视的文件描述符长时间不活跃了,select还 阅读全文
posted @ 2017-12-16 20:36 Mr.hu 阅读(487) 评论(0) 推荐(0) 编辑
摘要: 概述 Python的select()方法直接调用操作系统的IO接口,它监控sockets,open files, and pipes(所有带fileno()方法的文件句柄)何时变成readable 和writeable, 或者通信错误,select()使得同时监控多个连接变的简单,并且这比写一个长循 阅读全文
posted @ 2017-12-16 20:35 Mr.hu 阅读(318) 评论(0) 推荐(0) 编辑
摘要: 概述 select,poll,epoll都是IO多路复用的机制。I/O多路复用就是通过一种机制,一个进程可以监视多个描述符,一旦某个描述符就绪(一般是读就绪或者写就绪),能够通知程序进行相应的读写操作。但select,poll,epoll本质上都是同步I/O,因为他们都需要在读写事件就绪后自己负责进 阅读全文
posted @ 2017-12-16 20:34 Mr.hu 阅读(114) 评论(0) 推荐(0) 编辑
摘要: I/O模式 刚才说了,对于一次IO访问(以read举例),数据会先被拷贝到操作系统内核的缓冲区中,然后才会从操作系统内核的缓冲区拷贝到应用程序的地址空间。所以说,当一个read操作发生时,它会经历两个阶段: 正式因为这两个阶段,linux系统产生了下面五种网络模式的方案。- 阻塞 I/O(block 阅读全文
posted @ 2017-12-16 20:33 Mr.hu 阅读(72) 评论(0) 推荐(0) 编辑