libevent的了解
来源:互联网 发布:阿里云 视频cdn加速 编辑:程序博客网 时间:2024/06/03 20:16
概念
libevent是一个轻量级的开源的高性能的事件触发的网络库,适用于windows、linux、bsd等多种平台,内部使用select、epoll、kqueue等系统调用管理事件机制。
它被众多的开源项目使用,例如大名鼎鼎的memcached等。
特点:
事件驱动,高性能;
轻量级,专注于网络(相对于ACE);
开放源码,代码相当精炼、易读;
跨平台,支持Windows、Linux、BSD和Mac OS;
支持多种I/O多路复用技术(epoll、poll、dev/poll、select和kqueue等),在不同的操作系统下,做了多路复用模型的抽象,可以选择使用不同的模型,通过事件函数提供服务;
支持I/O,定时器和信号等事件;
采用Reactor模式;
功能
Libevent提供了事件通知,io缓存事件,定时器,超时,异步解析dns,事件驱动的http server以及一个rpc框架。
事件通知:当文件描述符可读可写时将执行回调函数。
Io缓存:缓存事件提供了输入输出缓存,能自动的读入和写入,用户不必直接操作io。
定时器:libevent提供了定时器的机制,能够在一定的时间间隔之后调用回调函数。
信号:触发信号,执行回调。
异步的dns解析:libevent提供了异步解析dns服务器的dns解析函数集。
事件驱动的http服务器:libevent提供了一个简单的,可集成到应用程序中的HTTP服务器。
RPC客户端服务器框架:libevent为创建RPC服务器和客户端创建了一个RPC框架,能自动的封装和解封数据结构。
Reactor(反应器)模式
libevent是一个典型的reactor模式的实现。这里做一下简单介绍:
我们知道,普通的函数调用机制如下:程序调用某个函数,函数执行,程序等待,函数将结果返回给调用程序(如果含有函数返回值的话),也就是顺序执行的。
而Reactor模式的基本流程如下:应用程序需要提供相应的接口并且注册到reactor反应器上,如果相应的事件发生的话,那么reactor将自动调用相应的注册的接口函数(类似于回调函数)通知你,所以libevent是事件触发的网络库。
阅读全文
0 0
- libevent的了解
- 了解libevent
- 了解libevent
- libevent和基于libevent的网络编程
- LibEvent的问题
- libev:libevent的挑战者
- libevent的一些知识
- libevent的参考资料
- libevent的简单应用
- libevent 的安装
- libevent的简单应用 .
- 安装php的libevent
- libevent库的使用方法
- libevent的使用
- 关于libevent的定时器
- libevent的使用(socket)
- libevent 的工作模型
- libevent库的编译
- C++访问控制
- linux 下socket编程
- 给定数组,试求能否从数组中取出n个不复用的数的和为sum
- web前端面试题(查找字符串中出现最多的字符)
- Git常用命令
- libevent的了解
- JQuery.Ajax()的data参数类型
- MySQL 5.7 (4sysbench安装和性能测试)
- spring 依赖注入 困惑小记
- 交易分析计划和最终落实执行
- MySQL 5.7 (5 tpcc-mysql 安装、 测试)
- Mac上配置Tomcat
- web前端面试题(关于闭包)
- 前端工具