libevent是一个轻量级的基于事件驱动的高性能的开源网络库,并且支持多个平台,对多个平台的I/O复用技术进行了封装,当我们编译库的代码时,编译的脚本将会根据OS支持的处理事件机制,来编译相应的代码,从而在libevent接口上保持一致。

在当前的服务器上,面对的主要问题就是要能处理大量的连接。而通过libevent这个网络库,我们就可以调用它的API来很好的解决上面的问题。

问题: 如何处理多个客户端连接

解决方案1:I/O复用技术:循环、poll、select、epoll。

解决方案2:多线程技术或多进程技术

解决方案3:常用的上述二者复合使用

lievent也是采用的上述系统提供的select,poll和epoll方法来进行I/O复用,但是针对于多个系统平台上的不同的I/O复用实现方式,libevent进行了重新的封装,并提供了统一的API接口。libevent在实现上使用了事件驱动这种机制,其本质上是一种Reactor模式。

Reactor模式,是一种事件驱动机制。应用程序需要提供相应的接口并注册到Reactor上,如果相应的事件发生,Reactor将主动调用应用程序注册的接口,这些接口又称为“回调函数”。

在Libevent中也是一样,向Libevent框架注册相应的事件和回调函数;当这些事件发生时,Libevent会调用这些回调函数处理相应的事件。

lbevent的事件支持三种,分别是网络IO、定时器和信号定时器的数据结构使用最小堆(Min Heap),以提高效率。网络IO和信号的数据结构采用了双向链表(TAILQ)。

参考:

1. Libevent核心原理

2. libevent实现https服务器

3. libevent和基于libevent的网络编程

4. 处理大并发之四 libevent demo详细分析

5. 使用 libevent 和 libev 提高网络应用性能  ibm

6. libevent源码分析

7. http://libevent.org/

转载于:https://www.cnblogs.com/embedded-linux/p/9347294.html

libevent简述相关推荐

  1. 简述计算机科学的核心内容,北京大学-计算机科学与技术(2018秋)作业及复习

    59.(第十章)外排序是指在排序前后,数据在外存上,排序时数据调入内存进行的排序方法. 60.(第十章)在选择排序.冒泡排序.归并排序中, 归并排序是空间复杂度最大的. 三.简答和程序题(共10题,每 ...

  2. 使用libevent多线程验证Linux上的服务器惊群现象

    什么是惊群现象? 惊群(thundering herd)是指,只有一个子进程能获得连接,但所有N个子进程却都被唤醒了,这种情况将使性能受损. 举一个很简单的例子,当你往一群鸽子中间扔一块食物,虽然最终 ...

  3. Linux下的Memcache安装(含libevent的安装)

    Linux下Memcache服务器端的安装 服务器端主要是安装memcache服务器端,目前的最新版本是 memcached-1.3.0 . 下载:http://www.danga.com/memca ...

  4. libevent源码深度剖析

    原文地址:http://blog.csdn.net/sparkliang/article/details/4957667 libevent源码深度剖析一 --序幕 张亮 1 前言 Libevent是一 ...

  5. libevent介绍

    libevent是一款事件驱动的网络开发包 由于采用 c 语言开发 体积小巧,跨平台,速度极快. 通常我们在建立服务器的处理模型的时候,主要是下面集中模型; (1)    a new Connecti ...

  6. linux下使用NetBeans调试libevent库

    1.安装libevent 参考:http://blog.csdn.net/unix21/article/details/8679269 libevent安装在usr/local/libevent下 2 ...

  7. Libevent调用

    1.最基本的打印libevent版本 #include <event.h> #include <stdio.h>int main() {const char *version ...

  8. 【libevent】libevent库学习总结(二)——编程步骤

    一.libevent编程步骤 0.分配并初始化event_base,两种方法 0.1 event_base_new:线程安全,代替event_init: 0.2 event_init:线程不安全,不推 ...

  9. 【libevent】libevent库学习总结(一)——基础

    libevent库学习总结(一)--基础 一.基础 1.1. 介绍 Libevent是一个用于开发可伸缩网络服务器的事件通知库.Libevent API提供了一种机制来执行回调函数,当某个特定事件发生 ...

最新文章

  1. docker安装redis提示没有日记写入权限_对 Redis 在 Windows 下的利用方式思考
  2. mysql字符集,insert,update,delete,select
  3. 《复杂》读书笔记(part7)--遗传算法
  4. java访问权限 public private protected
  5. Windows线程调度学习(一)
  6. 美团饿了么接连宕机 只因天气太热
  7. vbs把excel文件另存为html,VBS实现将Excel表格保存为txt文本
  8. defaultlib library conflicts with use of other libs; use /NODEFAULTLIB:library
  9. JZ32 从上往下打印二叉树
  10. 2021级C语言大作业 - 消灭星星
  11. LintCode—删除链表中的元素(452)
  12. linux安装中文输入法 -谷歌拼音
  13. MIUI12内置软件卸载工具 MIUI系统应用 免ROOT 卸载工具
  14. git clone时遇到问题:remote: Incorrect username or password ( access token )
  15. flutter showDialog/AlertDialog 报错:No MaterialLocalizations found
  16. 387. 字符串中的第一个唯一字符(javascript)387. First Unique Character in a String
  17. vue组件中的data为什么是一个函数
  18. kubectl工具使用
  19. 关于车路协同的几点质疑与回应——天翼交通总经理王劲答记者问
  20. echarts绘制百家姓饼状图

热门文章

  1. signature=45ca03a07a2e888fb57b0d2c351110d7,Attention: Docket Number H054a Dec. 31,2004
  2. java 拦截jsp页面_JSP 过滤器
  3. K-means 聚类算法的图像区域分割
  4. 机器学习就那么回事儿
  5. 数据分析:星巴克店铺分布有何规律?
  6. vc sleep不占进程_Python 中的进程深入
  7. java8 comparator接口_Java8 Comparator 排序方法
  8. idea一键导包快捷键_十三肝了2晚的《IDEA操作手册-终极秘籍》终于来了...
  9. mql 查询多结果_详解Oracle分页查询概念、缘由及如何实现
  10. java核心基础 --- 基本数据类型