当前时区为 UTC + 8 小时



发表新帖 回复这个主题  [ 4 篇帖子 ] 
作者 内容
1 楼 
 文章标题 : 学习epoll注意什么?
帖子发表于 : 2008-07-03 10:25 
头像

注册: 2008-07-02 15:43
帖子: 36
送出感谢: 0 次
接收感谢: 0 次
我的任务是学习epoll,应该注意什么,有什么合适的学习方法呢,希望前辈指点。


页首
 用户资料  
 
2 楼 
 文章标题 :
帖子发表于 : 2008-07-03 10:51 
头像

注册: 2007-04-06 10:24
帖子: 2487
地址: ~/Shanghai
送出感谢: 0 次
接收感谢: 0 次
epoll 是啥,刚才man了一下
man epoll | grep -A1 'NAME'

代码:
NAME
       epoll - I/O event notification facility


好像是select 的替代者

不过楼主你还是学好基础先
http://forum.ubuntu.org.cn/viewtopic.ph ... ht=#824298


_________________
http://silenceisdefeat.com/~greco
代码:
''.join([chr(ord(c)-2) for c in 'O{"G/ockn"ku<"itgeq0ujkBiockn0eqo'])
echo -n "Z3JlY28uc2hpQGdtYWlsLmNvbQ==" | base64 -d


页首
 用户资料  
 
3 楼 
 文章标题 :
帖子发表于 : 2008-07-11 18:33 
头像

注册: 2007-03-13 11:23
帖子: 1343
送出感谢: 0 次
接收感谢: 0 次
看到有两个人问,干脆一块答了.
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


_________________
"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/


页首
 用户资料  
 
4 楼 
 文章标题 :
帖子发表于 : 2008-07-12 14:49 

注册: 2008-07-10 15:08
帖子: 448
送出感谢: 0 次
接收感谢: 0 次
该地儿可以帮助你的,首先你得配置好你的ubuntu
还有我认为应该在你建文件的路径下打开终端
再运行就应该可以了

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


页首
 用户资料  
 
显示帖子 :  排序  
发表新帖 回复这个主题  [ 4 篇帖子 ] 

当前时区为 UTC + 8 小时


在线用户

正在浏览此版面的用户:没有注册用户 和 4 位游客


不能 在这个版面发表主题
不能 在这个版面回复主题
不能 在这个版面编辑帖子
不能 在这个版面删除帖子
不能 在这个版面提交附件

前往 :  
本站点为公益性站点,用于推广开源自由软件,由 DiaHosting VPSBudgetVM VPS 提供服务。
我们认为:软件应可免费取得,软件工具在各种语言环境下皆可使用,且不会有任何功能上的差异;
人们应有定制和修改软件的自由,且方式不受限制,只要他们自认为合适。

Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
简体中文语系由 王笑宇 翻译