1. Select源码解析
基于2.6.28内核代码,select主要包含4个函数。
sys_select:处理时间参数,然后调用core_sys_select。
core_sys_select:处理三个fd_set参数(in, out, ex),然后调用do_select。
do_select:遍历所有的fd,做select/poll的工作。在合适的时机把...
分类:
其他好文 时间:
2014-09-19 01:12:44
阅读次数:
192
概论:select、poll和epoll三组I/O复用系统调用,这3组系统调用都能同时监听多个文件描述符。它们将等待由timeout参数指定的超时时间,直到一个或者多个文件描述符上有事件发生时返回.返回值是就绪的文件描述符的数量。返回0表示没有事件发生,超时.我们从事件集、最大支持文件描述符的数量、...
分类:
其他好文 时间:
2014-09-18 22:15:04
阅读次数:
156
int select(int nfds, fd_set *readfds, fd_set *writefds, fd_set *exceptfds, struct timeval *timeout);
int poll(struct pollfd *fds, nfds_t nfds, int timeout);
int epoll_wait(int epfd, struct...
分类:
其他好文 时间:
2014-09-17 23:23:42
阅读次数:
325
epoll函数epoll函数的使用与select、poll上有很大的差异.epoll使用一组函数来完成任务,而不是单个函数.epoll把用户关心的文件描述符上的事件放在内核里的一个事件表中,从而无需每次都要重复传入文件描述符集或者事件集.epoll需要一个额外的文件描述符,来唯一标示内核中的这个事件...
分类:
其他好文 时间:
2014-09-17 20:21:42
阅读次数:
188
select比epoll效率差的原因:select是轮询,epoll是触发式的,所以效率高。Select:1.Socket数量限制:该模式可操作的Socket数由FD_SETSIZE决定,内核默认32*32=1024.2.操作限制:通过遍历FD_SETSIZE(1024)个Socket来完成调度,不...
分类:
系统相关 时间:
2014-09-13 20:06:55
阅读次数:
199
1.内核中提高I/O性能的新方法epollepoll是什么?按照man手册的说法:是为处理大批量句柄而作了改进的poll。要使用epoll只需要这三个系统调用:epoll_create(2),epoll_ctl(2),epoll_wait(2)。当然,这不是2.6内核才有的,它是在2.5.44内核中...
分类:
其他好文 时间:
2014-09-07 21:09:05
阅读次数:
435
一、实现 Select实现 原理: Select把要监听的文件信息拷贝到内核层。接着遍历所有监听的文件描述符对应的驱动程序的Poll函数,poll函数把当前进程挂到该设备驱动的等待队列中去,然后Poll函数会返回哪些资源可用的bitmask。如果有资源可用,则把表示哪些文件有事件的bitma...
分类:
其他好文 时间:
2014-09-07 01:02:34
阅读次数:
275
-bash-3.00# ntpq -p remote refid st t when poll reach delay offset disp==============================================================================*...
分类:
其他好文 时间:
2014-09-05 17:48:31
阅读次数:
1534
#-*-coding:utf-8-*-#python:2.x__author__='Administrator'"""poll实现服务器时,需要用到register()和unregister()方法,作用是加入和移除对象,poll()的返回值包括文件描述和事件,事件常量有POLLIN,POLLPRI...
分类:
编程语言 时间:
2014-09-04 20:44:30
阅读次数:
165