构建event_base
在你开始使用任何Libevent前,你需要先创建一个或多个event_base。每个event_base管理着一个event的集合,并可以检测出哪些event被激活了。如果event_base使用了锁,就可以在多线程中安全的访问它。但要注意它的主poll函数只能被单个线程运行。如果你想用多个线程运行IO迭代器,你需要为每个线程分配一个event_base。
注:在以后...
分类:
其他好文 时间:
2015-01-22 23:25:34
阅读次数:
412
我们直到上层对文件操作结合select与poll可以实现阻塞操作,那么究竟是如何实现的呢?
select接口:
int select(int nfds, fd_set *readset, fd_set *writeset,
fd_set *exceptset, struct timeval *timeout);
其中:
nf...
分类:
系统相关 时间:
2015-01-20 20:39:20
阅读次数:
559
select、poll、epoll都是IO多路复用的机制,但是他们的机制有很大的区别
1、select
select机制刚开始的时候,需要把fd_set从用户空间拷贝到内核空间,并且检测的fd数是有限制的,由FD_SETSIZE设置,一般是1024。
检测的时候,根据timeout,遍历fd_set表,把活跃的fd(可读写或者错误),拷贝到用户空间,
再在用户空间依次处理相关的fd。...
分类:
系统相关 时间:
2015-01-20 20:35:55
阅读次数:
1199
在写epoll回显服务器代码之前,可以先看看上一篇文章:select poll epoll三者之间的比较。最近在继续学习网络编程中的服务端编程中,了解到很多网游服务器是在IOMP(IO完成端口)框架下写的,但是这种方式只能在 Windows 下使用,奇了怪了,这么好的东西为什么不在Linux下也.....
分类:
其他好文 时间:
2015-01-19 22:17:52
阅读次数:
253
man epoll:NAME epoll - I/O event notification facilitySYNOPSIS #include DESCRIPTION The epoll API performs a similar task to poll(2)...
分类:
系统相关 时间:
2015-01-19 12:33:17
阅读次数:
282
epoll 实际上是 poll 的一种改进,它可以处理大批量的句柄。而 poll 又是 select 的一种改进。在 select 中对所打开的文件描述符个数有一定的限制,该限制由 FD_SETSIZE 设置(一般为 1024 或 2048), 而且内核中的 select 的实现是采用轮询来处理描文件描述符集,因此效率低。当文件描述符集中的某个描述符处于可读、可写或异常状态时,select 采用内存拷贝方法通知用户空间。因此, 在 select 模型中文件描述符个数受限且效率低的问题就很明显。为了解决 se...
分类:
其他好文 时间:
2015-01-15 22:01:57
阅读次数:
239
前言 不知不觉,已那么长时间没有更新东西了,说来真是汗颜啊。(主要是最近在技术上豁然开朗的感觉越来越少了-_-|||) 最近一直在学习Linux相关的东西。又一次接触到了I/O复用模型(select/poll/epoll),由于好久没在用NIO写过代码了,今天就小试写个例子,以巩固下对I/O复用.....
分类:
其他好文 时间:
2015-01-14 12:27:58
阅读次数:
291
转载自Linux epoll模型,这篇文章讲的非常详细! 定义: epoll是Linux内核为处理大批句柄而作改进的poll,是Linux下多路复用IO接口select/poll的增强版本,它能显著的减少程序在大量并发连接中只有少量活跃的情况下的系统CPU利用率。因为它会复用文件描述符集合来...
分类:
系统相关 时间:
2015-01-14 11:01:26
阅读次数:
397
poll 与 select 很类似,都是对描述符进行遍历,查看是否有描述符就绪。如果有就返回就绪文件描述符的个数将。poll 函数如下: #include int poll(struct pollfd *fdarray, unsigned long nfds, int timeout) ...
分类:
系统相关 时间:
2015-01-13 21:26:48
阅读次数:
209
linux 下的 select 知识点 unp 的第六章已经描述的很清楚,我们这里简单的说下 select 的作用,并给出 select 的客户端实例。我们知道 select 是IO 多路复用的一个最简单支持,poll 和 epoll 是 select 的升级版。在UNIX 网络编程第五章读后有.....
分类:
系统相关 时间:
2015-01-13 19:20:31
阅读次数:
283