poll/select/epoll 对比select和poll即使只有一个描述符就绪,也要遍历整个集合。如果集合中活跃的描述符很少,遍历过程的开销就会变得很大,而如果集合中大部分的描述符都是活跃的,遍历过程的开销又可以忽略。epoll的实现中每次只遍历活跃的描述符(如果是水平触发,也会遍历先前活跃的...
分类:
其他好文 时间:
2015-06-26 19:26:46
阅读次数:
190
IO复用是Linux中的IO模型之一,IO复用就是进程预先告诉内核需要监视的IO条件,使得内核一旦发现进程指定的一个或多个IO条件就绪,就通过进程进程处理,从而不会在单个IO上阻塞了。Linux中,提供了select、poll、epoll三种接口函数来实现IO复用。
1、select函数
#include
#include
int select(int nfds, fd_set *...
Linux 2.4之前的内核版本号,Nginx事件驱动的方法是使用poll、select功能。过程必须等待一个事件发生在连接上(接收数据)时间,部连接都告诉内核,由内核找出哪些连接上有事件发生。因为须要把大量连接从用户空间复制到内核空间,所以开销巨大,因此,使用poll、select事件驱动方式。最...
分类:
其他好文 时间:
2015-06-19 16:46:28
阅读次数:
126
收藏自:http://www.cnblogs.com/cr0-3/archive/2011/09/09/2172280.htmlWINDOWS完成端口编程1、基本概念2、WINDOWS完成端口的特点3、完成端口(CompletionPorts)相关数据结构和创建4、完成端口线程的工作原理5、Wind...
上一篇主要讲了线程池的原理和实现,感觉有点意犹未尽,这篇文章是对上篇文章的一个补充,主要围绕以下两点展开,one-connection-per-thread的实现方式以及线程池中epoll的使用。one-connection-per-thread根据scheduler_functions的模板,.....
分类:
编程语言 时间:
2015-06-17 11:17:37
阅读次数:
122
简介 ?epoll是Linux内核中的一种可扩展IO事件处理机制,最早在Linux2.5.44内核中引入,可被用于代替POSIX select和poll系统调用,并且在具有大量应用程序请求时能够获得较好的性能(此时监控的文件描述符数目非常...
分类:
其他好文 时间:
2015-06-16 00:02:28
阅读次数:
245
Memcached是分布式的,也就是说它不是本地的。它基于网络连接(当然它也可以使用localhost)方式完成服务,本身它是一个独立于应用的程序或守护进程(Daemon方式)。Memcached使用libevent库实现网络连接服务。libevent是个程序库,它将Linux的epoll、BSD类...
分类:
系统相关 时间:
2015-06-14 19:45:21
阅读次数:
169
自己以前写TCP服务器,并不需要考虑到并发与资源的问题,使用的都是单独线程处理单个TCP连接的方式(说谓的PPC/TPC模型)。如今自己做高并发服务器,必须处理好这些问题。因为用的是linux2.6,因此选用epoll作为I/O多路复用技术接口再好不过了(呵呵呵)。通俗地讲,epoll就是:告诉.....
分类:
其他好文 时间:
2015-06-12 16:32:24
阅读次数:
172
自己以前写TCP服务器,并不需要考虑到并发与资源的问题,使用的都是单独线程处理单个TCP连接的方式(说谓的PPC/TPC模型)。如今自己做高并发服务器,必须处理好这些问题。因为用的是linux2.6,因此选用epoll作为I/O多路复用技术接口再好不过了(其实自己也不太懂这个术语)。通..
分类:
其他好文 时间:
2015-06-10 01:14:56
阅读次数:
81
自己以前写TCP服务器,并不需要考虑到并发与资源的问题,使用的都是单独线程处理单个TCP连接的方式(说谓的PPC/TPC模型)。如今自己做高并发服务器,必须处理好这些问题。因为用的是linux2.6,因此选用epoll作为I/O多路复用技术接口再好不过了(其实自己也不太懂这个术语)。通..
分类:
其他好文 时间:
2015-06-10 01:14:22
阅读次数:
152