[TOC]
转载地址:https://juejin.im/post/5b4ac3e0f265da0f6e516a6c
事件驱动理解
**个人理解:**事件驱动(even-driven),字面理解即:由事件去触发某个或者一系列动作。
百度百科: 从事件角度说,事件驱动程序的基本结构是由一个事件收集器、一个事件发送器和一个事件处理器组成。 事件收集器专门负责收集所有事件,包括来自用户的(如鼠标、键盘事件等)、来自硬件的(如时钟事件等)和来自软件的(如操作系统、应用程序本身等)。 事件发送器负责将收集器收集到的事件分发到目标对象中。 事件处理器做具体的事件响应工作。
事件驱动模型
1. 系统启动,监听器把自己注册到事件中心,与某种事件进行绑定
2. 事件发送器发送事件到事件中心,事件中心去查找与处理该事件的监听器
为什么要用事件驱动呢
通常,我们写服务器处理模型的程序时,有以下几种模型:
1)每收到一个请求,创建一个新的进程,来处理该请求;
2)每收到一个请求,创建一个新的线程,来处理该请求;
3)每收到一个请求,放入一个事件列表,让主进程通过非阻塞I/O方式来处理请求
上面的几种方式,各有千秋,
第 1)种方法,由于创建新的进程的开销比较大,所以,会导致服务器性能比较差,但实现比较简单。
第 2)种方式,由于要涉及到线程的同步,有可能会面临死锁等问题。
第 3)种方式,在写应用程序代码时,逻辑比前面两种都复杂。
综合考虑各方面因素,一般普遍认为第(3)种方式是大多数网络服务器采用的方式
*实际上,事件驱动模型的核心就是 线程池 !!! 来实现异步非阻塞。
「真诚赞赏,手留余香」