博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
libevent总结学习
阅读量:7086 次
发布时间:2019-06-28

本文共 1016 字,大约阅读时间需要 3 分钟。

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层)的这些缓冲数据拷贝到用户层,而这些内存拷贝
都会消耗时间。

 

转载于:https://www.cnblogs.com/charlesblc/p/6286685.html

你可能感兴趣的文章
JavaScript 设计模式系列 - 自定义函数(惰性函数)
查看>>
《从零构建前后分离web项目》:开篇 - 纵观WEB历史演变
查看>>
markdown test
查看>>
Flutter Plugin开发流程
查看>>
程序员到架构师需要的编程基础
查看>>
[译]在 JavaScript 中 为什么你应当使用 map 和 filter 来替代 forEach
查看>>
AVA测试框架内部的Promise异步流程控制模型
查看>>
2016年博客汇总
查看>>
(连载)Android 8.0 : Android虚拟机之JNI
查看>>
js二维数组新认识
查看>>
世界杯迄今最火的一场比赛 一文看懂世界杯背后的阿里云黑科技
查看>>
项目owner看这里,MaxCompute全表扫描新功能,给你“失误”的机会
查看>>
看东方明珠新媒体如何基于阿里视频云,构建完整的视频OTT平台SaaS服务
查看>>
iOS菜单滚动定位以及滚动悬浮实现方案
查看>>
JB的测试之旅-听说安卓微信7.0不能抓https?
查看>>
从Kotlin的类开始说起
查看>>
js异步发展历程
查看>>
适用于android的OpenSL ES指南-面向Android的OpenSL ES
查看>>
创建和使用 WebAssembly 组件
查看>>
iOS Principle:KVO
查看>>