我要投搞

标签云

收藏小站

爱尚经典语录、名言、句子、散文、日志、唯美图片

当前位置:四肖中特 > 反向复用 >

Libevent的事件驱动源码分析(三)之反应堆的设计

归档日期:07-17       文本归类:反向复用      文章编辑:爱尚语录

  Reactor:负责响应IO事件,当检测到一个新的事件,将其发送给相应的Handler去处理。

  Handler:负责处理非阻塞的行为,标识系统管理的资源;同时将handler与事件绑定。

  Reactor为单个线程,需要处理accept连接,同时发送请求到处理器中。

  将处理器的执行放入线程池,多线程进行业务处理。但Reactor仍为单个线,对于多个CPU的机器,为充分利用系统资源,将Reactor拆分为两部分。

  mainReactor负责监听连接,accept连接给subReactor处理,为什么要单独分一个Reactor来处理监听呢?因为像TCP这样需要经过3次握手才能建立连接,这个建立连接的过程也是要耗时间和资源的,单独分一个Reactor来处理,可以提高性能。

  定义了一些接口,用于应用程序控制事件调度,以及应用程序注册、删除事件处理器和相关的描述符。它是事件处理器的调度核心。Reactor管理器使用同步事件分离器来等待事件的发生。一旦事件发生,Reactor管理器先是分离每个事件,然后调度事件处理器,最后调用相关的模板函 数来处理这个事件。通过上述分析,我们注意到,是Reactor管理器而不是应用程序负责等待事件、分离事件和调度事件。实际上,Reactor管理器并没有被具体的事件处理器调用,而是管理器调度具体的事件处理器,由事件处理器对发生的事件做出处理。这就是类似Hollywood原则的“反向控制”。应用程序要做的仅仅是实现一个具体的事件处理器,然后把它注册到Reactor管理器中。接下来的工作由管理 器来完成

  基于libevent的视频服务器源代码,可以实现简单的流转发功能,仅供参考.

  ——锁和线.概述libevent作为一个开源的高性能的事件通知库。经常被用作于多线程网络程序的开发。说到多线程我们想到的当然是线程安全。庆幸的是libevent是支持多线程的(默认情况下是不开启多线程的)。当...

  UML状态图的实用C、C++设计:嵌入式系统的事件驱动型编程技术(第二版)02-27

  嵌入式系统事件驱动编程的重要参考书籍《UML状态图的实用C、C++设计:嵌入式系统的事件驱动型编程技术(第二版)》中文版,已经创建书签,以及《Practical UML Statecharts in C,C++, Second Editi...

  libevent 深入浅出。教程目的主要是快速建立libevent的认知,了解libevent的常用数据结构和编程方法。达到可以使用libevent写出自己的高并发服务器处理模型。

  Redis中,处理网络IO时,采用的是事件驱动机制。但它没有使用libevent或者libev这样的库,而是自己实现了一个非常简单明了的事件驱动库ae_event,主要代码仅仅400行左右。     ...

  Redis源码剖析(二)io多路复用函数及事件驱动流程01-04阅读数 840

  半同步/半反应堆线一、什么是线程池线程池是服务器预先创建的一组线程,这些线程运行着相同的代码,并具有相同的属性。当有新的任务到来的时候,主线程通过某种方式选择线程池中的某一个线程来为之服务,服务完之后又放回线程池中。二...

  07-03一个很好的基于事件驱动单片机程序设计,源码开发,是开发的很好的参考下载

  08-19阅读数 1606事件事件是对象发送的消息,以发信号通知操作的发生。 事件可以由用户交互引起,例如单击按钮,也可能是由某些其他程序的逻辑引发,例如更改的属性值。 引发事件的对象称为eventsender 事件发送方不知...

  09-27阅读数 622事件驱动架构模式是一个非常流行的异步分布模式,可生成高可扩展性应用。而且它也具有强适应能力,可被用于小程序或者大型复杂程序。事件驱动架构是由高耦合度、单一目的的事件处理模块构成,这些模块异步接收、处理...

  07-14阅读数 278事件驱动开发简单应用创建Web窗体runat=”server”大概翻译–跑在服务

  01-07阅读数 119在多模块Maven项目中,反应堆(Reactor)是一个包含了所有需要构建模块的抽象概念,对于Maven用户来说,主要关心的是两点: 哪些模块会被包含到反应堆中?反应堆中所有模块的构建顺序是什么? 例...

  这是一个使用libevent实现的web服务器,客户端采用CInternetSession来实现的,是一个完整的可用的例子,项目采用cmake来管理。提供给大家参考,有问题可以邮件给,多谢。下载

  阅读数 6265PHP是能让你生成动态网页的工具之一。PHP网页文件被当作一般HTML网页文件来处理并且在编辑时你可以用编辑HTML的常规方法编写PHP。最近在折腾那个安卓扫码登录的功能,然后网页端是用php的做了,...博文

  阅读数 2万+今天把本人花费一个月左右整理的600多款小程序源码发布出来,以后每个月还会持续更新,很大一部分都带有后台源码并包含有小程序上线教程,帮你分分钟上线自己的小程序,下面我们来看看目录截图,最后面会把源码目...博文

  阅读数 8万+前言本文是对之前的一篇文章Spring+SpringMVC+mybatis+Quartz整合代码部分做的一个修改和补充, 其中最大的变化就是后台框架变成了Spring Boot。本工程所用到的技术或工...博文

  Sifei_123:[reply]Poisx[/reply] 博主可以试一下,这个代码如果发送大一点的jpg图片,应该会有问题

  Sifei_123:[reply]Poisx[/reply] 感谢你的回复,还有一个疑问,有可能发送几次以后socket写缓冲区满了(比如我发送10M大小的图片),而程序中设置的非阻塞模式,满了以后再继续执行send函数,client并不会收到的呀

本文链接:http://pebeducation.com/fanxiangfuyong/439.html