一、epoll简介epoll是Linux内核为处理大批量文件描述符而作了改进的poll,是Linux下多路复用IO接口select/poll的增强版本,它能显著提高程序在大量并发连接中只有少量活跃的情况下的系统CPU利用率。另一点原因就是获取事件的时候,它无须遍历整个被侦听的描述符集,只要遍历那些被..
分类:
系统相关 时间:
2017-01-25 23:23:57
阅读次数:
465
event_add、event_del两个函数分别是使event生效和失效的,下面就来看一下两个函数的实现。 event_add 这里以epoll作为后端来举例分析event_add函数的调用流程: event_del 这里以epoll作为后端来分析event_del的调用流程: 结论: 到这里ev ...
分类:
其他好文 时间:
2017-01-21 07:36:37
阅读次数:
476
Nginx 轻量级,采用 C 进行编写,同样的 web 服务,会占用更少的内存及资源 抗并发,nginx 以 epoll and kqueue 作为开发模型,处理请求是异步非阻塞的,负载能力比 apache 高很多,而 apache 则是阻塞型的。在高并发下 nginx 能保持低资源低消耗高性能 , ...
分类:
Web程序 时间:
2017-01-18 12:43:56
阅读次数:
244
epoll后端机制的实现代码在epoll.c文件中。 1 /* 2 * Copyright 2000-2007 Niels Provos <provos@citi.umich.edu> 3 * Copyright 2007-2012 Niels Provos, Nick Mathewson 4 * ...
分类:
其他好文 时间:
2017-01-12 13:31:10
阅读次数:
341
本文转自:http://www.cnblogs.com/fanzhidongyzby/p/4098546.html 服务器端编程经常需要构造高性能的IO模型,常见的IO模型有四种: (1)同步阻塞IO(Blocking IO):即传统的IO模型。 (2)同步非阻塞IO(Non-blocking IO ...
分类:
其他好文 时间:
2017-01-09 16:05:02
阅读次数:
187
asio库基于操作系统提供的异步机制,采用前摄器模式(Proactor)实现可移植的异步(或同步)IO操作,不需要使用多线程和锁,有效避免多线程编程带来的诸多有害副作用(如竞争,死锁)。 asio封装了操作系统的select、kqueue、poll/epoll、overlapped I/O等机制,实 ...
分类:
其他好文 时间:
2017-01-08 16:40:51
阅读次数:
185
1. 异步化, 以epoll为代表。libevent也是基于epoll而实现的。 2. 消息驱动, 是跟异步化相结合,reactor模式。另有Scala的Actor模式,是完全的消息交互。 3. 一些TCP参数, 比如禁掉Nagle选项,不要打开CORK算法,使得发包和ack不要延迟太多。 4. S ...
分类:
其他好文 时间:
2017-01-07 22:46:48
阅读次数:
271
IO复用是Linux中的IO模型之一,IO复用就是进程预先告诉内核需要监视的IO条件,使得内核一旦发现进程指定的一个或多个IO条件就绪,就通过进程进程处理,从而不会在单个IO上阻塞了。Linux中,提供了select、poll、epoll三种接口函数来实现IO复用。 1、select函数 nfds参 ...
分类:
系统相关 时间:
2016-12-27 07:22:24
阅读次数:
294
协程,又称微线程,纤程。英文名Coroutine,协程是一种用户态的轻量级线程。 协程拥有自己的寄存器上下文和栈。协程调度切换时,将寄存器上下文和栈保存到其他地方,在切回来的时候,恢复先前保存的寄存器上下文和栈。因此: 协程能保留上一次调用时的状态(即所有局部状态的一个特定组合),每次过程重入时,就 ...
分类:
其他好文 时间:
2016-12-24 11:45:58
阅读次数:
295
1.协程 2.Greenlet and Gevent 3.同步与异步的性能区别 4.爬网页 5.通过gevent实现单线程下的多socket并发 server code client code 6.Select\Poll\Epoll IO多路复用 select selectors select的升级 ...
分类:
编程语言 时间:
2016-12-23 22:34:22
阅读次数:
274