libevent总结学习
Memcached用了libevent,但是Redis没有用libevent。Redis的代码还没有libevent的三分之一。
libevent有下面几大部分组成:
* 事件管理包括各种IO(socket)、定时器、信号等事件,也是libevent应用最广的模块;
* 缓存管理是指evbuffer功能;
* DNS是libevent提供的一个异步DNS查询功能;
* HTTP是libevent的一个轻量级http实现,包括服务器和客户端
evbuffer和bufferevent的关系:
一言以蔽之,bufferevent使用了evbuffer,并且使用了两份,读入buffer和写出buffer。另外bufferevent里面还加了event。
说明bufferevent是一个带有缓冲区的I/O。也就是说,这个bufferevent知识多了两个evbuffer,然后对event_set函数和event_add函数进行再次封装!
http://blog.csdn.net/chenycbbc0101/article/details/52091085
通过我的这篇文章:
http://www.cnblogs.com/charlesblc/p/5456128.html
可以看出bufferevent主要函数是:
bufferevent *bev = bufferevent_socket_new(base, fd, BEV_OPT_CLOSE_ON_FREE);
bufferevent_setcb(bev, socket_read_cb, NULL, socket_event_cb, NULL);
bufferevent_enable(bev, EV_READ | EV_PERSIST);
然后读和写是这样的:
size_t len = bufferevent_read(bev, msg, sizeof(msg) - 1); bufferevent_write(bev, reply, strlen(reply));
缓冲模块主要用于缓冲从网络接收到的数据,以及
用户提交的数据(用于发送)。很多时候,我们还需要将网络模块层(非TCP层)的这些缓冲数据拷贝到用户层,而这些内存拷贝
都会消耗时间。
libevent总结学习的更多相关文章
- Libevent库学习笔记
Libevent是一个事件触发的网络库,适用于windows.linux.bsd等多种平台,Libevent在底层select.pool.kqueue和epoll等机制基础上,封装出一致的事件接口.可 ...
- 【系统】libevent库学习
Libevent库 是一个用C语言开发的.轻量级的开源高性能事件通知库,主要功能特点如下: 事件驱动(event-driven),高性能; 注册事件分优先级: 支持 I/O,定时器和信号等事件信息: ...
- libevent 简单学习
//NetworkManager.h #ifndef _NET_WORK_MANAGER_ #define _NET_WORK_MANAGER_ #include "event2/util. ...
- linux 下第一个Libevent代码学习
#include <event.h> struct event ev; struct timeval tv; void time_cb(int fd, short event, void* ...
- libevent之学习文档
1.官方文档 2.中文版 3.gitbook
- R1 学习记录
libevent框架学习特点: 1.可移植行,跨平台的 2.速度快,libevent会用各平台最快的非阻塞IO函数 3.扩展性 4.方便性构成: 1.evutil: 抽象出各平台network的函数 ...
- vs2013 调试libevent 源码
自己内功的提升,无非是向前辈学习和修炼自身,对于编码也是如此,学习优秀的库只有从 源代码学起,才能深刻理解库实现的来龙去脉,加深自己的理解,提升自己的功力. 今天就介绍一下vs2013 下面调试lib ...
- PHP中的Libevent学习
wangbin@2012,1,3 目录 Libevent在php中的应用学习 1. Libevent介绍 2. 为什么要学习libevent 3. Php libeven ...
- libevent学习之二:Windows7(Win7)下编译libevent
Linux下编译参考源码中的README文件即可,这里主要记录Windows下的编译. 一.准备工作 去官网下载最新的稳定发布版本libevent-2.0.22-stable 官网地址:http:// ...
随机推荐
- A计划
A计划 Time Limit : 3000/1000ms (Java/Other) Memory Limit : 32768/32768K (Java/Other) Total Submissio ...
- why is agreement hard in a distributed system?
same question as: why is PAXOS necessary? 1, what if >1 nodes become leaders simultaneously? that ...
- updating the chroot
Ubuntu may stop working after a Chrome OS update. If that's the case, update all the installed targe ...
- GsonFormat 报错
GsonFormat原来也有bug 我是用GsonFormat来生成java bean的,但是运行起来居然报 Caused by: java.lang.NumberFormatException: E ...
- hr定位
css里写 <style> hr{ position:relative; top: 500px; } </style> 重要!!! hr不能绝对定位, 只能相对定位,所以 hr ...
- hibernate —— 树状存储
package com.pt.treeStrut; import java.util.Set; import javax.persistence.CascadeType; import javax.p ...
- VB 对象变量或with块变量未设置
先看错误代码,以下代码提示 对象变量或with块变量未设置: Dim obj As Object obj = WebBrowser1.Document.getElementById("swi ...
- MyBatis-配置缓存
<cache type="org.mybatis.caches.ehcache.LoggingEhcache"> <property name="tim ...
- Arch: Configurations
the original purpose is to show the steps needed to setup i3 in vbox.. easy. alright, it is a bit mi ...
- Co-Debugging JNI with Android Studio and Visual Studio
Tutorials > Android > Integration with other tools > Co-Debugging JNI with Android Studio a ...