分页: 1 / 1

学习epoll注意什么?

发表于 : 2008-07-03 10:25
jingying12
我的任务是学习epoll,应该注意什么,有什么合适的学习方法呢,希望前辈指点。

发表于 : 2008-07-03 10:51
greco
epoll 是啥,刚才man了一下
man epoll | grep -A1 'NAME'

代码: 全选

NAME
       epoll - I/O event notification facility
好像是select 的替代者

不过楼主你还是学好基础先
viewtopic.php?p=824298&highlight=#824298

发表于 : 2008-07-11 18:33
kofshower
看到有两个人问,干脆一块答了.
Linux提供了/dev/epoll的设备以及后来2.6内核中对/dev/epoll设备的访问的封装(System Epoll),是这样一种IO模型,和window下面的IOCP模型类似,是为了解决大量的连接queue时候,select和poll因为轮询而浪费了大量的CPU时间的一个为了提高IO效率的解决方案。
其本质的思想类似于内核提供了一种信号机制。这个文件描述符有了IO操作的话,由系统通知你。而不是你去用select或是poll轮询。(我记得有本书里面的比喻叫什么你不要问,我来告诉你,这个同样也是window的设计哲学)。

代码: 全选

基本的流程是:
create_epoll(int maxfds);
//创建一个epoll的句柄
nfds = epoll_wait(kdpfd, events, maxevents, -1); 
//在服务器的循环中来查询所有的网络接口,看哪一个可以读,哪一个可以写了
//和select的语法像吧之后遍历所有的events
如果是主socket的事件的话,则表示有新连接进入了,进行新连接的处理。
调用的api流程是
accept->setnonblocking/*将新连接置于非阻塞模式 */->将新连接也加入EPOLL的监听队列->
epoll_ctl/*将这个新的event加入到epoll的监听队列里面*/
如果不是主socket的事件的话,则代表是一个用户socket的事件,则来处理这个用户socket的事情
比如读写。。。
使用前先想清楚是不是真的需要以这些为基础搭建服务器。
这个是最值得注意的。因为毕竟这个比写poll加多线程要简单呢。
如果要有工业强度的话,可以看看ACE
貌似最近老喜欢写长句,不懂会不会很绕口。 :em01

发表于 : 2008-07-12 14:49
weihua2008
该地儿可以帮助你的,首先你得配置好你的ubuntu
还有我认为应该在你建文件的路径下打开终端
再运行就应该可以了

http://wiki.ubuntu.org.cn/index.php?tit ... iant=zh-cn