平时做项目,涉及到网络层的都是epoll,前几年发现redis的epoll实现起来非常的精简,好用。因为提供的接口简单,爱并实现的很高效。于是,我就提取出来,直接使用。
今天又打开该文件详细的看看他的实现细节。
首先简单介绍epoll,它是linux内核下的一个高效的处理大批量的文件操作符的一个实现。不仅限于socket fd。
他在超时时间内会唤醒有事件的操作符。其中有两种模式 1、水平触...
分类:
其他好文 时间:
2015-05-02 15:15:00
阅读次数:
367
首先用一句话总结要辨析的5中范式分别解决的问题:1NF:属性原子性2NF:部分依赖3NF:传递依赖(非主属性对关键码)BCNF:传递依赖(主属性对候选键)4NF:(最高级别的范式,不经常使用这里引用定义)D是R上成立的FD和MVD集合,而且D中每一个非平法的X→→Y的左部X都是R的超键当中第一范式,...
分类:
其他好文 时间:
2015-05-01 17:20:43
阅读次数:
196
问题描述编写代码用于实现程序的休眠,例如,如果要求程序休眠10秒钟,那么在这10秒内程序要一直等待,而不执行任何操作。 解决思路在Linux下,有一个select函数用于实现进程的阻塞,该函数的原型是:int select(int n, fd_set *readfds,fd_set *writefds, fd_set *exceptfds, struct timeval *timeout);可以用...
分类:
其他好文 时间:
2015-04-30 14:15:47
阅读次数:
121
int fcntl(int fd,int cmd,...) 函数fcntl提供了非常丰富的功能。主要依赖于cmd的各种参数:复制已有的文件描述符 F_DUPFD,F_DUPFD_CLOEXEC获取设置文件描述符的标志 F_GETFD,F_SETFD获取设置文件状态标志 F_GETFL,F_SETF....
分类:
其他好文 时间:
2015-04-27 23:04:17
阅读次数:
177
epoll提供了ET和LT两种模式,网上文章很多,这里只总结下LT模式下的两个缺点epoll对fd的管理实现是用的红黑树,所以epoll_ctl并不是一个很快的操作,而LT模式更放大了这个缺点。有一个关于内存屏障(Memory barrier)的patch:prevent missed events...
分类:
其他好文 时间:
2015-04-27 21:25:40
阅读次数:
151
linux文件函数-close
一 关闭文件
函数名:close
函数原形:int close(int fd)
函数功能:关闭一个文件
所属头文件:#include
返回值:
成功:返回 0
失败:返回 -1
参数说明:fd是待关闭的文件描述符...
分类:
系统相关 时间:
2015-04-27 18:26:37
阅读次数:
210
linux文件函数-read
一 读文件
函数名:read
函数原形:
ssize_t read(int fd, void *buf, size_t count)
函数功能:从一个文件描述符中读取文件
所属头文件:#include
返回值:
成功:返回读取的字节数
失败:-1
参数说明
...
分类:
系统相关 时间:
2015-04-27 18:25:58
阅读次数:
178
linux文件函数-write
一 读取文件
函数名:write
函数原形:
ssize_t write(int fd, const void *buf,size_t count)
函数功能:向文件中写入数据
所属头文件:#include
返回值:
成功:返回写入的字节数
失败:返回-1
参数说明
...
分类:
系统相关 时间:
2015-04-27 18:25:23
阅读次数:
149
linux文件函数-write
一 定位文件
函数名:lseek
函数原形:
off_t lseek(int fd, off_t offset, int whence)
函数功能:移动文件指针
所属头文件:
#include
#include
返回值:
成功:返回移动后的文件指针到文件开头的字节数即偏移...
分类:
系统相关 时间:
2015-04-27 18:24:44
阅读次数:
181
1024限定的不只是监听的个数,还是文件描述符的最大值,注意,是值 今天编写模拟客户端程序进行测试,使用了select。之前一直错记成1024是对fd_set里fd个数的限制(我的程序是每次select一个fd,所以自我感觉没问题),结果在socket连接个数到达1050~1100时,总发生段错误。...
分类:
系统相关 时间:
2015-04-27 15:12:47
阅读次数:
347