技术头条 - 一个快速在微博传播文章的方式     搜索本站
您现在的位置首页 --> 查看专题: libevent
    libevent自带了一个http库,用它可以很简单的实现一个http服务器,本文非常简单地分析之. evhttp evhttp库有几个主要的结构体,它们之间的联系非常龌龊: 其中,结构体event, min_heap, evsignal_info, eventop, event_base在前面几篇文章中已经介绍过了,这里不再啰嗦. evbuffer evbuffer用于读或写缓冲,图示为: 和evbuffer有关的外露接口主要是: //从文件读数据到缓冲,读取量为max(howmuch, 4096) int evbuffer_read(struct evbuffer *buf, int fd, int howmuch); //把缓冲写出文件 int evbuffer_write(struct evbuffer *buffer, int fd) evbuffer比较简单,不多介绍. evh
    这篇文章将讲讲libevent对定时器和信号事件的处理. Timer事件 反应堆event_base包含了一个最小堆min_heap结构体的实例,以此维护注册到这个反应堆实例的定时器事件: struct event_base { //其他成员 struct min_heap timeheap; }; 回顾一下最小堆min_heap: typedef struct min_heap { //p指向一个动态分配的数组,数组元素是event指针. struct event** p; unsigned n, a; // n表示目前保存了多少元素,a表示p指向的内存能够存储event指针的个数 } min_heap_t; 可以看到,它包含一个连续的内存块用于存储定时器事件.针对min_heap的操作主要有: static inline int mi
    php有个libevent扩展,在一年前我曾经拿它实现了一个thrift socket server,虽然我没有把它放在正式的场合来使用,但是我觉得这个扩展应该可以有更广泛的用途,比如: phpDaemon ― 一个异步的服务器端开发框架. tail
    最近几天都在看libevent的源代码,什么是libevent呢?他是一个由C写的基于事件驱动的网络库,使用方便,效率也还不错,利用这个库能很大程度上提高开发效率,而且libevent跨平台支持的也非常好。像memcache就是一个非常典型的例子,既然memcache这么有威望的产品都选择用他,说明这个东西还是值得大家研究的。 因为我是windows,所以关于epool,kqueue什么的都没去看,也没看iocp,花了一天时间看完了select模型的源代码,代码不多...
[ 共4篇文章 ][ 第1页/共1页 ][ 1 ]
© 2009 - 2024 by blogread.cn 微博:@IT技术博客大学习

京ICP备15002552号-1