最新文章列表

Epoll 轮询机制 和libevent的多线程实现

最近需要使用Linux开发,需要在网络连接上复用。原有程序是使用每个请求进行一次创建线程,执行事务,销毁线程,这种模式来实现多个请求。现在希望能够基于线程池实现请求复用。实际上效果应该不会太好,因为: 请求都是内部高速Lan连接 单台服务器请求数不会超过500 属于CPU计算密集型;I/O较少。因此,主要耗时,还是服务本身,平均100ms/每核;假设线程创建销毁1ms,那么这1%即使完 ...
lvdccyb 评论(0) 有6677人浏览 2015-05-07 20:03

epoll的ET和LT两种模式对比及注意事项

ET模式: 因为ET模式只有从unavailable到available才会触发,所以 1、读事件:需要使用while循环读取完,一般是读到EAGAIN,也可以读到返回值小于缓冲区大小; 如果应用层读缓冲区满:那就需要应用层自行标记,解决OS不再通知可读的问题 2、写事件:需要使用while循环写到EAGAIN,也可以写到返回值小于缓冲区大小 如果应用层写缓冲区空(无内容可写):那就需 ...
chuqingq 评论(1) 有5579人浏览 2013-09-01 16:31

linux AIO libaio和epoll实现非阻塞模型

      epoll是Linux内核为处理大批句柄而作改进的poll,是Linux下多路复用IO接口select/poll的增强版本,它能显著的减少程序在大量并发连接中只有少量活跃的情况下的系统CPU利用率。因为它会复用文件描述符集合来传递结果而不是迫使开发者每次等待事件之前都必须重新准备要被侦听的文件描述符集合,另一个原因就是获取事件的时候,它无须遍历整个被侦听的描述符集,只要遍历那些被内核I ...
yuexiaodong 评论(0) 有5719人浏览 2013-07-27 11:33

epoll介绍【转】

epoll是多路复用IO(I/O Multiplexing)中的一种方式,但是仅用于linux2.6以上内核,在开始讨论这个问题之前,先来解释一下为什么需要多路复用IO. 以一个生活中的例子来解释. 假设你在大学中读书,要等待一个朋友来访,而这个朋友只知道你在A号楼,但是不知道你具体住在哪里,于是你们约好了在A号楼门口见面. 如果你使用的阻塞IO模型来处理这个问题,那么你就只能一 ...
nigelzeng 评论(0) 有2019人浏览 2012-07-17 16:55

select epoll

    传统的网络编程用select来处理并发访问的问题,但是select随着连接数的增多性能会有明显的下降,同时select所能支持的连接数也有限制,单个进程所能打开的最大连接数有FD_SETSIZE宏定义,其大小是32个整数的大小(在32[/size]位的机器上,大小就是32*32,同理64位机器上FD_SETSIZE为32*64)。      而epoll的引入很好的解决了select出现的这 ...
huangtu 评论(0) 有725人浏览 2012-06-01 16:03

epoll学习笔记

epoll学习笔记 epoll有两种模式,Edge Triggered(简称ET) 和 Level Triggered(简称LT).在采用这两种模式时要注意的是,如果采用ET模式,那么仅当状态发生变化时才会通知,而采用LT模式类似于原来的select/poll操作,只要还有没有处理的事件就会一直通知. 以代码来说明问题: 首先给出server的代码,需要说明的是每次accept的连接,加入可读集 ...
haoningabc 评论(0) 有1326人浏览 2012-05-31 23:32

如何使用epoll? 一个C语言的简单例子

* How to use epoll? A complete example in C 译文 通常的网络服务器实现, 是对每一个连接使用一个单独的线程或进程。对高性能应用而言,由于需要同时处理非 ...
lqy1987lqy 评论(0) 有6073人浏览 2012-04-12 12:07

epoll简化版本

epoll基于socket 先上socket服务端 #include <stdio.h> #include <sys/socket.h> #include <arpa/inet.h> #include <stdlib.h> #include <string.h> #include <unistd.h> #inclu ...
haoningabc 评论(0) 有1097人浏览 2012-03-20 17:53

epoll的两种模式

linux异步IO浅析 http://hi.baidu.com/_kouu/blog/item/e225f67b337841f42f73b341.html epoll有两种模式,Edge Triggered(简称ET) 和 Level Triggered(简称LT).在采用这两种模式时要注意 ...
haoningabc 评论(0) 有11360人浏览 2012-02-29 23:18

select、poll、epoll的比较

select、poll、epoll的比较 http://my.chinaunix.net/space.php?uid=20196318&do=blog&id=366042 http://blog.endlesscode.com/2010/03/27/select-poll-epoll-intro/ linux提供了select、poll、epoll接口来实现IO复用,三者的原 ...
haoningabc 评论(0) 有1341人浏览 2012-02-27 11:10

Epoll,Poll,Select

先说Select: 1.Socket数量限制:该模式可操作的Socket数由FD_SETSIZE决定,内核默认32*32=1024. 2.操作限制:通过遍历FD_SETSIZE个Socket来完成调度,不管哪个Socket是活跃的,都遍历一遍. 后说Poll: 1.Socket数量几乎无限制:该模式下的Socket对应的fd列表由一个数组来保存,大小不限(默认4k). 2.操作限制:同Select. ...
abc123456789cba 评论(0) 有1470人浏览 2012-02-07 08:32

python的select,poll,epoll用法

  #!/usr/bin/env python #coding=utf-8 import os import fcntl import select, sys, subprocess vmstat_pipe = subprocess.Popen('netstat', shell=True, bufsize=1024, stdout=subprocess.PIPE) ...
zhouxi2010 评论(1) 有6496人浏览 2012-01-31 20:54

linux下epoll如何实现高效处理百万句柄的

开发高性能网络程序时,windows开发者们言必称iocp,linux开发者们则言必称epoll。大家都明白epoll是一种IO多路复用技术,可以非常高效的处理数以百万计的socket句柄,比起以前的select和poll效率高大发了。我们用起epoll来都感觉挺爽,确实快,那么,它到底为什么可以高速处理这么多并发连接呢?   先简单回顾下如何使用C库封装的3个epoll系统调用吧。   ...
russelltao 评论(0) 有4333人浏览 2012-01-06 10:29

Linux I/O多路复用之select,poll与epoll区别

1 selectselect()系统调用提供一个机制来实现同步多元I/O:#include <sys/time.h>#include <sys/types.h>#include <unistd.h>int select (int n,fd_set *readfds,fd_set *writef ...
yypiao 评论(0) 有2348人浏览 2011-12-20 00:32

select、poll、epoll的比较

<转自http://www.cnblogs.com/xuxm2007/archive/2011/08/15/2139809.html>    linux提供了select、poll、epoll接口来实现IO复用,三者的原型如下所示,本文从参数、实现、性能等方面对三者进行对比。     int select(int nfds, fd_set *readfds, fd_set ...
yypiao 评论(0) 有923人浏览 2011-12-20 00:15

epoll的helloworld

转https://banu.com/blog/2/how-to-use-epoll-a-complete-example-in-c/ 说明:介绍来自http://baike.baidu.com/view/1385104.htm epoll是Linux下多路复用IO接口select/poll的增强版本,它能显著提高程序在大量并发连接中只有少量活跃的情况下的系统CPU利用率,因为它不会复用文件描述符集合 ...
haoningabc 评论(0) 有1439人浏览 2011-10-12 10:06

select, poll和epoll

对select、poll、epoll了解得不多,下面是从《构建高性能Web站点》摘录下来的介绍,等以后真正接触到select、poll和epoll方面的开发再详细写一下使用上的区 ...
eriol 评论(0) 有1865人浏览 2011-10-02 20:14

学习使用epoll

epoll是Linux下多路复用IO接口select/poll的增强版本,它能显著减少程序在大量并发连接中只有少量活跃的情况下的系统CPU利用率。     一、epoll的优点 支持一个进程打开大数目的socket描述符。 IO效率不随FD数目增加而线性下降。   二、epoll的使用 epoll有2种工作方式:LT和ET。   
kenby 评论(0) 有3260人浏览 2011-08-29 20:39

redis 事件处理机制及其它

关于redis的事件处理机制,网上有很详细的源码解析了,基于2.0.4的,URL如下:redis源代码分析8–事件处理(上) redis源代码分析8–事件处理(中) redis源代码分析8–事件处理(下) 小总结: 初始化:在redis.c中initServer调用aeCreateEventLoop,并建立了现有唯一的一个time event:serverCron. 使 ...
calmhawk 评论(0) 有2976人浏览 2011-08-19 17:28

select, poll和epoll的区别

select()系统调用提供一个机制来实现同步多元I/O:   #include <sys/time.h>#include <sys/types.h>#include <unistd.h>int select 
cloudmail 评论(0) 有772人浏览 2011-08-11 16:33

最近博客热门TAG

Java(141744) C(73651) C++(68608) SQL(64571) C#(59609) XML(59133) HTML(59043) JavaScript(54919) .net(54785) Web(54514) 工作(54118) Linux(50905) Oracle(49875) 应用服务器(43289) Spring(40812) 编程(39454) Windows(39381) JSP(37542) MySQL(37267) 数据结构(36424)

博客人气排行榜

    博客电子书下载排行

      >>浏览更多下载

      相关资讯

      相关讨论

      Global site tag (gtag.js) - Google Analytics