学习epoll注意什么?
版面规则
我们都知道新人的确很菜,也喜欢抱怨,并且带有浓厚的Windows习惯,但既然在这里询问,我们就应该有责任帮助他们解决问题,而不是直接泼冷水、简单的否定或发表对解决问题没有任何帮助的帖子。乐于分享,以人为本,这正是Ubuntu的精神所在。
我们都知道新人的确很菜,也喜欢抱怨,并且带有浓厚的Windows习惯,但既然在这里询问,我们就应该有责任帮助他们解决问题,而不是直接泼冷水、简单的否定或发表对解决问题没有任何帮助的帖子。乐于分享,以人为本,这正是Ubuntu的精神所在。
- jingying12
- 帖子: 36
- 注册时间: 2008-07-02 15:43
学习epoll注意什么?
我的任务是学习epoll,应该注意什么,有什么合适的学习方法呢,希望前辈指点。
- greco
- 帖子: 2487
- 注册时间: 2007-04-06 10:24
- 来自: ~/Shanghai
epoll 是啥,刚才man了一下
man epoll | grep -A1 'NAME'
好像是select 的替代者
不过楼主你还是学好基础先
viewtopic.php?p=824298&highlight=#824298
man epoll | grep -A1 'NAME'
代码: 全选
NAME
epoll - I/O event notification facility
不过楼主你还是学好基础先
viewtopic.php?p=824298&highlight=#824298
http://silenceisdefeat.com/~greco
代码: 全选
''.join([chr(ord(c)-2) for c in 'O{"G/ockn"ku<"itgeq0ujkBiockn0eqo'])
echo -n "Z3JlY28uc2hpQGdtYWlsLmNvbQ==" | base64 -d
- kofshower
- 帖子: 1343
- 注册时间: 2007-03-13 11:23
- 联系:
看到有两个人问,干脆一块答了.
Linux提供了/dev/epoll的设备以及后来2.6内核中对/dev/epoll设备的访问的封装(System Epoll),是这样一种IO模型,和window下面的IOCP模型类似,是为了解决大量的连接queue时候,select和poll因为轮询而浪费了大量的CPU时间的一个为了提高IO效率的解决方案。
其本质的思想类似于内核提供了一种信号机制。这个文件描述符有了IO操作的话,由系统通知你。而不是你去用select或是poll轮询。(我记得有本书里面的比喻叫什么你不要问,我来告诉你,这个同样也是window的设计哲学)。
使用前先想清楚是不是真的需要以这些为基础搭建服务器。
这个是最值得注意的。因为毕竟这个比写poll加多线程要简单呢。
如果要有工业强度的话,可以看看ACE
貌似最近老喜欢写长句,不懂会不会很绕口。
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
貌似最近老喜欢写长句,不懂会不会很绕口。

"We are all in the mud, but some of us are looking at the stars." (Oscar Wilde)
We are not born for ourselves.
人生天地间,并非为自己
Homepage:http://sites.google.com/site/polarisnotme/
We are not born for ourselves.
人生天地间,并非为自己
Homepage:http://sites.google.com/site/polarisnotme/
-
- 帖子: 448
- 注册时间: 2008-07-10 15:08
该地儿可以帮助你的,首先你得配置好你的ubuntu
还有我认为应该在你建文件的路径下打开终端
再运行就应该可以了
http://wiki.ubuntu.org.cn/index.php?tit ... iant=zh-cn
还有我认为应该在你建文件的路径下打开终端
再运行就应该可以了
http://wiki.ubuntu.org.cn/index.php?tit ... iant=zh-cn