linux 网络编程
飞天絮雪
学习这几件事不是缺乏实践,而是缺乏努力!
展开
-
处理大并发之三 对libevent的初步认识
处理大并发之三对libevent的初步认识首先翻译下http://www.wangafu.net/~nickm/libevent-book/01_intro.html里的一段文章对异步IO的一个简要介绍大多数应用程序都是阻塞的IO调用,如果IO调用是同步(阻塞)的,它不能立即返回直到它的操作完成,或者经过了很长时间直到网络栈丢弃。当你在一个TCP连接上调用”connect()”时,原创 2013-07-17 21:11:57 · 13298 阅读 · 2 评论 -
处理大并发之一 对异步非阻塞的理解
处理大并发中对异步非阻塞的理解 在研究nginx和node.js的时候常会遇到异步、非阻塞等,之前自己也经常使用epoll,对其同步与阻塞,异步与非阻塞有了一定的认识,现对参考资料总结下。 首先讨论下使用事件驱动,异步编程的优点: 充分利用了系统资源,执行代码无须阻塞等待某种操作完成,有限的资源可以用于其他的任务。其非常适合于后端的网络服务编程。 在服务原创 2013-05-16 20:22:27 · 36525 阅读 · 22 评论 -
处理大并发之二 对epoll的理解,epoll客户端服务端代码
处理大并发之二对epoll的理解,epoll客户端服务端代码序言:该博客是一系列的博客,首先从最基础的epoll说起,然后研究libevent源码及使用方法,最后研究nginx和node.js,关于select,poll这里不做说明,只说明其相对于epoll的不足,其实select和poll我也没用过,因为我选择了epoll。说起epoll,做过大并发的估计都不陌生,之前做了个ST原创 2013-07-16 20:25:53 · 26737 阅读 · 6 评论 -
处理大并发之四 libevent demo详细分析(对比epoll)
处理大并发之四 libevent demo详细分析(对比epoll)libevent默认情况下是单线程,每个线程有且仅有一个event_base,对应一个struct event_base结构体,以及赋予其上的事件管理器,用来安排托管给它的一系列的事件。当有一个事件发生的时候,event_base会在合适的时间去调用绑定在这个事件上的函数,直到这个函数执行完成,然后在返回安排其他事件。需要原创 2013-07-18 20:07:35 · 35338 阅读 · 1 评论 -
处理大并发之五 使用libevent利器bufferevent
处理大并发之五 使用lievent利器bufferevent 首先来翻译一段文章 你可能注意到随着我们代码变得越来越高效,程序也变得更加复杂。当我们产生一个进程的时候,我们没有必要为每一个链接管理一个buffer,我们只需要每个处理独立栈分配缓冲区就可以了。在读和写的时候,我们不必明确的跟踪每一个socket,这在我们的代码里是一个暗示,我们没有必要定义一个原创 2013-07-19 23:21:04 · 46298 阅读 · 4 评论 -
Epoll之ET、LT模式
Epoll之ET、LT模式在使用epoll时,在函数 epoll_ctl中如果不设定,epoll_event 的event默认为LT(水平触发)模式。使用LT模式意味着只要fd处于可读或者可写状态,每次epoll_wait都会返回该fd,这样的话会带来很大的系统开销,且处理时候每次都需要把这些fd轮询一遍,如果fd的数量巨大,不管有没有事件发生,epoll_wait都会触发这些fd的轮询判原创 2013-12-02 18:35:19 · 9044 阅读 · 0 评论