心在冰

导航

2012年3月1日 #

libevent源码深度剖析七

摘要: 转自:http://blog.csdn.net/sparkliang/article/details/4987751libevent源码深度剖析七——事件主循环张亮 现在我们已经初步了解了libevent的Reactor组件——event_base和事件管理框架,接下来就是libevent事件处理的中心部分——事件主循环,根据系统提供的事件多路分发机制执行事件循环,对已注册的就绪事件,调用注册事件的回调函数来处理事件。1 阶段性的胜利 Libevent将I/O事件、定时器和信号事件处理很好的结合到了一起,本节也会介绍libevent是如何做到这一点的。 在看完本节的内容后,读者应该会对Libe 阅读全文

posted @ 2012-03-01 19:38 心在冰 阅读(343) 评论(0) 推荐(0) 编辑

libevent源码深度剖析六

摘要: 转自:http://blog.csdn.net/sparkliang/article/details/4985955libevent源码深度剖析六——初见事件处理框架张亮前面已经对libevent的事件处理框架和event结构体做了描述,现在是时候剖析libevent对事件的详细处理流程了,本节将分析libevent的事件处理框架event_base和libevent注册、删除事件的具体流程,可结合前一节libevent对event的管理。1 事件处理框架-event_base回想Reactor模式的几个基本组件,本节讲解的部分对应于Reactor框架组件。在libevent中,这就表现为ev 阅读全文

posted @ 2012-03-01 19:36 心在冰 阅读(263) 评论(0) 推荐(0) 编辑

libevent源码深度剖析五

摘要: 转自:http://blog.csdn.net/sparkliang/article/details/4974876libevent源码深度剖析五——libevent的核心:事件event张亮对事件处理流程有了高层的认识后,本节将详细介绍libevent的核心结构event,以及libevent对event的管理。1 libevent的核心-event Libevent是基于事件驱动(event-driven)的,从名字也可以看到event是整个库的核心。event就是Reactor框架中的事件处理程序组件;它提供了函数接口,供Reactor在事件发生时调用,以执行相应的事件处理,通常它会绑定 阅读全文

posted @ 2012-03-01 19:33 心在冰 阅读(314) 评论(0) 推荐(0) 编辑

libevent源码深度剖析四

摘要: 转自:http://blog.csdn.net/sparkliang/article/details/4957885libevent源码深度剖析四——libevent源代码文件组织1 前言详细分析源代码之前,如果能对其代码文件的基本结构有个大概的认识和分类,对于代码的分析将是大有裨益的。本节内容不多,我想并不是说它不重要!2 源代码组织结构Libevent的源代码虽然都在一层文件夹下面,但是其代码分类还是相当清晰的,主要可分为头文件、内部使用的头文件、辅助功能函数、日志、libevent框架、对系统I/O多路复用机制的封装、信号管理、定时事件管理、缓冲区管理、基本数据结构和基于libevent 阅读全文

posted @ 2012-03-01 19:31 心在冰 阅读(231) 评论(0) 推荐(0) 编辑

libevent源码深度剖析三

摘要: 转自:http://blog.csdn.net/sparkliang/article/details/4957820libevent源码深度剖析三——libevent基本使用场景和事件流程张亮1 前言学习源代码该从哪里入手?我觉得从程序的基本使用场景和代码的整体处理流程入手是个不错的方法,至少从个人的经验上讲,用此方法分析libevent是比较有效的。2 基本应用场景基本应用场景也是使用libevnet的基本流程,下面来考虑一个最简单的场景,使用livevent设置定时器,应用程序只需要执行下面几个简单的步骤即可。1)首先初始化libevent库,并保存返回的指针struct event_ba 阅读全文

posted @ 2012-03-01 19:29 心在冰 阅读(327) 评论(0) 推荐(0) 编辑

libevent源码深度剖析二

摘要: 转自:http://blog.csdn.net/sparkliang/article/details/4957744libevent源码深度剖析二——Reactor模式张亮前面讲到,整个libevent本身就是一个Reactor,因此本节将专门对Reactor模式进行必要的介绍,并列出libevnet中的几个重要组件和Reactor的对应关系,在后面的章节中可能还会提到本节介绍的基本概念。1 Reactor的事件处理机制首先来回想一下普通函数调用的机制:程序调用某函数?函数执行,程序等待?函数将结果和控制权返回给程序?程序继续处理。Reactor释义“反应堆”,是一种事件驱动机制。和普通函数调 阅读全文

posted @ 2012-03-01 19:28 心在冰 阅读(264) 评论(0) 推荐(0) 编辑

libevent源码深度剖析一

摘要: 转自:http://blog.csdn.net/sparkliang/article/details/4957667libevent源码深度剖析一——序幕张亮1 前言Libevent是一个轻量级的开源高性能网络库,使用者众多,研究者更甚,相关文章也不少。写这一系列文章的用意在于,一则分享心得;二则对libevent代码和设计思想做系统的、更深层次的分析,写出来,也可供后来者参考。附带一句:Libevent是用c语言编写的(MS大牛们都偏爱c语言哪),而且几乎是无处不函数指针,学习其源代码也需要相当的c语言基础。2 Libevent简介上来当然要先夸奖啦,Libevent 有几个显著的亮点:事件 阅读全文

posted @ 2012-03-01 19:23 心在冰 阅读(317) 评论(0) 推荐(0) 编辑

2012年2月29日 #

用map做优先级队列 (众多ACMers, 一定要熟悉STL)

摘要: 转自:http://hi.baidu.com/azuryy/blog/item/8ec53e118dd945c3a7ef3f30.html先说说STL的容器一些常见的注意问题:有网友说,为什么用了STL,程序的效率反而下降了呢?是的,如果用不好,你编程是方便了,可是效率下降了.1: Vector,这个是基于线性数组的容器 注意事项: 在声明一个vector的时候,尽量指明大小,如果输入数据不超过10^6,那就声明一个10^6大小的vector,否则,vector的默认大小是10.(太小了),但是vector的大小可以自动扩大,不要以为仅仅是在已经分配的空间后面再多申请一块,而是新开辟一块空间, 阅读全文

posted @ 2012-02-29 14:34 心在冰 阅读(1130) 评论(0) 推荐(0) 编辑

2010年9月20日 #

Visual C++ - sprintf() 函数用法

摘要: 将字串格式化命令。sprintf 是个变参函数,使用时经常出问题,而且只要出问题通常就是能导致程序崩溃的内存访 问错误,但好在由sprintf 误用导致的问题虽然严重,却很容易找出,无非就是那么几种情况,通 常用眼睛再把出错的代码多看几眼就看出来了。sprintf 将字串格式化。在头文件 #include<stdio.h>中语法: int sprintf(string format, ... 阅读全文

posted @ 2010-09-20 10:36 心在冰 阅读(642) 评论(0) 推荐(0) 编辑

2010年6月10日 #

搭建塞班开发平台的方法

摘要: 转自:http://mi2006.5d6d.com/thread-408-1-1.html 在这里我们讨论的是为诺基亚的智能手机平台之一S60开发其软件的平台搭建。S60平台的基础是symbian操作系统,symbian操作系统是当前主流的手机操作系统,有着强大的功能和稳定性,支持C++和java语言的手机软件开发。建于是symbian的特性,似乎选择用C++开发出更多的功能。其软件后缀名为sis... 阅读全文

posted @ 2010-06-10 08:48 心在冰 阅读(653) 评论(0) 推荐(0) 编辑