事件驱动理解

Posted by 麦子 on Sunday, 2020年01月26日

[TOC]

转载地址:https://juejin.im/post/5b4ac3e0f265da0f6e516a6c

事件驱动理解

**个人理解:**事件驱动(even-driven),字面理解即:由事件去触发某个或者一系列动作。

百度百科: 从事件角度说,事件驱动程序的基本结构是由一个事件收集器、一个事件发送器和一个事件处理器组成。 事件收集器专门负责收集所有事件,包括来自用户的(如鼠标、键盘事件等)、来自硬件的(如时钟事件等)和来自软件的(如操作系统、应用程序本身等)。 事件发送器负责将收集器收集到的事件分发到目标对象中。 事件处理器做具体的事件响应工作。

事件驱动模型

Xnip2020-01-26_15-07-57

1. 系统启动监听器把自己注册到事件中心与某种事件进行绑定
2. 事件发送器发送事件到事件中心事件中心去查找与处理该事件的监听器

为什么要用事件驱动呢

通常,我们写服务器处理模型的程序时,有以下几种模型:

1)每收到一个请求,创建一个新的进程,来处理该请求;

2)每收到一个请求,创建一个新的线程,来处理该请求;

3)每收到一个请求,放入一个事件列表,让主进程通过非阻塞I/O方式来处理请求

上面的几种方式,各有千秋,

第 1)种方法,由于创建新的进程的开销比较大,所以,会导致服务器性能比较差,但实现比较简单。

第 2)种方式,由于要涉及到线程的同步,有可能会面临死锁等问题

第 3)种方式,在写应用程序代码时,逻辑比前面两种都复杂。

综合考虑各方面因素,一般普遍认为第(3)种方式是大多数网络服务器采用的方式

*实际上,事件驱动模型的核心就是 线程池 !!! 来实现异步非阻塞。

「真诚赞赏,手留余香」

真诚赞赏,手留余香

使用微信扫描二维码完成支付