1
前言Libevent是一个轻量级的开源高性能网络库,使用者众多,研究者更甚,相关文章也不少。写这一系列文章的用意在于,一则分享心得;二则对libevent代码和设计思想做系统的、更深层次的分析,写出来,也可供后来者参考。附带一句:Libevent是用c语言编写的(MS大牛们都偏爱c语言哪),而且...
分类:
其他好文 时间:
2014-05-26 19:48:58
阅读次数:
398
http://blog.csdn.net/mafuli007/article/details/74760141简介主页:http://www.monkey.org/~provos/libevent/。libevent是一个事件触发的网络库,适用于windows、linux、bsd等多种平台,内部使用...
分类:
其他好文 时间:
2014-05-26 08:38:22
阅读次数:
261
Linux网络编程 五种I/O
模式及select、epoll方法的理解web优化必须了解的原理之I/o的五种模型和web的三种工作模式五种I/O
模式——阻塞(默认IO模式),非阻塞(常用语管道),I/O多路复用(IO多路复用的应用场景),信号I/O,异步I/O
分类:
系统相关 时间:
2014-05-21 20:56:15
阅读次数:
330
定义:
epoll是Linux内核为处理大批句柄而作改进的poll,是Linux下多路复用IO接口select/poll的增强版本,它能显著的减少程序在大量并发连接中只有少量活跃的情况下的系统CPU利用率。因为它会复用文件描述符集合来传递结果而不是迫使开发者每次等待事件之前都必须重新准备要被侦听的....
分类:
系统相关 时间:
2014-05-19 10:13:07
阅读次数:
485
最近写程序遇到一个问题,就是发现select监听标准输出的时候遇到了死循环,具体程序如下程序一。程序的意图是每当用户在控制台有任何输入,就输出”hello world!”。
程序一:
#include
#include
#include
#include
int
main(int argc, char *argv[])
{
...
分类:
其他好文 时间:
2014-05-14 14:46:25
阅读次数:
250
libevent源码深度剖析一——序幕张亮1
前言Libevent是一个轻量级的开源高性能网络库,使用者众多,研究者更甚,相关文章也不少。写这一系列文章的用意在于,一则分享心得;二则对libevent代码和设计思想做系统的、更深层次的分析,写出来,也可供后来者参考。附带一句:Libevent是用c语...
分类:
其他好文 时间:
2014-05-14 08:19:31
阅读次数:
256
0.等待队列
在Linux内核中等待队列有很多用途,可用于中断处理、进程同步及定时。我们在这里只说,进程经常必须等待某些事件的发生。等待队列实现了在事件上的条件等待: 希望等待特定事件的进程把自己放进合适的等待队列,并放弃控制全。因此,等待队列表示一组睡眠的进程,当某一条件为真时,由内核唤醒它们。
等待队列由循环链表实现,由等待队列头(wait_queue_head_t)和等待队列...
分类:
其他好文 时间:
2014-05-13 16:03:28
阅读次数:
370
——作者:lvyilong316
最近写程序遇到一个问题,就是发现select监听标准输出的时候遇到了死循环,具体程序如下程序一。程序的意图是每当用户在控制台有任何输入,就输出”hello world!”。
程序一:
#include
#include
#include
#include
int
main(int argc, c...
分类:
其他好文 时间:
2014-05-13 14:47:25
阅读次数:
294
Epoll实现分析——作者:lvyilong316
通过上一章分析,poll运行效率的两个瓶颈已经找出,现在的问题是怎么改进。首先,如果要监听1000个fd,每次poll都要把1000个fd 拷入内核,太不科学了,内核干嘛不自己保存已经拷入的fd呢?答对了,epoll就是自己保存拷入的fd,它的API就已经说明了这一点——不是 epoll_wait的时候才传入fd,而是通过epoll_ctl...
分类:
其他好文 时间:
2014-05-13 13:38:54
阅读次数:
321
erlang R17带来了新的socket选项{active,N} ,与{active,once}一起为应用层提供流量控制。为什么会多了这个选项,{active,once}不是可以有效抑制大量socket消息吗?我们知道,{active,once}在每次接收到包都要重新设置active选项,才能继续接收erlang的消息通知。实际上,每次设定{active,once}都意味着调用一次epoll_ctl, 如果请求过于频繁,就会有大量的epoll_ctl调用。erlang目前只有一个线程会收割epoll_wa...
分类:
其他好文 时间:
2014-05-13 08:04:58
阅读次数:
365