事件驱动程序设计

✍ dations ◷ 2025-09-10 05:26:55 #计算机编程,事件 (计算机)

事件驱动程序设计(英语:Event-driven programming)是一种电脑程序设计模型。这种模型的程序运行流程是由用户的动作(如鼠标的按键,键盘的按键动作)或者是由其他程序的消息来决定的。相对于批处理程序设计(batch programming)而言,程序运行的流程是由程序员来决定。批处理(batch)的程序设计在初级程序设计教学课程上是一种方式。然而,事件驱动程序设计这种设计模型是在交互程序(Interactive program)的情况下孕育而生的。

事件驱动程序可以由任何编程语言来实现,然而使用某些语言来撰写会比其他的语言来的简单。有些集成开发环境(简称IDE)也会影响实现事件驱动程序设计的难易程度。有的 IDE 会使的开发工作变的很简单,有的则否。

取代传统上一次等待一个完整的指令然后再做运行的方式,事件驱动程序模型下的系统,基本上的架构是预先设计一个事件循环所形成的程序,这个事件循环程序不断地检查目前要处理的信息,根据要处理的信息运行一个触发函数进行必要的处理。其中这个外部信息可能来自一个目录夹中的文件,可能来自键盘或鼠标的动作,或者是一个时间事件。

对一个事件驱动(event driven)系统进行程序设计,因此可以视为改写系统默认触发函数的行为,来符合自己需要的一种动作。输入的事件可以放进事件循环或者是经由已经注册的中断处理器来与硬件事件交互;而许多的软件系统使用了混和这两种技术的处理。预先设计好的算法确定了一件事,那就是当他们被需要的时候,就会在适当的时机被触发。也因此提供了一个模拟中断驱动环境(interrupt driven environment)的软件抽象架构。事件驱动程序设计基本上包含了许多小程序片段,这些小程序片段被称为事件处理器(英语:event handler)并且被用来回应外部的事件与分发事件。通常尚未被事件处理器处理的事件,都会被系统放在一个称为事件队列的数据结构中,等待被处理。

许多情况下,事件处理器可以自己触发事件,因此也可能形成一个事件串(英语:event cascade)。事件驱动程序设计的着重于弹性以及异步化上面,并且企图尽可能的modeless。 图形用户界面这类程序就是典型的事件驱动设计方式。

计算机操作系统是事件驱动程序的典型示例。在操作系统的最底层,中断处理器的动作就像是硬件事件的直接处理器,搭配着 CPU 运行分配事件规则动作。对软件进程而言,基本上操作系统可视为一个事件分配器,发送数据和软件中断给用户自己写的软件进程。

下面是两个数相加的示例,分别用批量版本与事件驱动版本来撰写


相关

  • 皮钦语皮钦语(英语:Pidgin,/ˈpɪdʒᵻn/,或pidgin language),又称混杂语言,一种简化版本的自然语言,这种语言来自于两个或两个以上的群体,他们之间没有共同语言,为了彼此沟通而发展出的语言
  • 军事演习军事演习,简称军演,专指军队进行大规模的实兵演习。早期的军事思想家,如孙膑、孙武、吴起等即强调军事训练,但军事演习的意涵则强调真实性。但为了节省军事开支,军事演习在20世纪
  • 横江 (金沙江支流)横江亦称关河,位于中国西南,是金沙江下段右岸支流。源出云南省鲁甸县水磨乡大海子,上源为居乐河,与昭鲁大河交汇后称洒渔河,在洛泽河汇入后称横江;在云南省水富县云富镇汇入金沙江
  • 马丁·兰道马丁·兰道(英语:Martin Landau,1928年6月20日-2017年7月15日),美国电影和电视演员。兰道出身于纽约布鲁克林的一个犹太家庭。17岁时开始为《每日邮报》绘制漫画。其电影生涯起步
  • 约翰·海克特·麦克阿瑟约翰·海克特·麦克阿瑟(英语:John Hector McArthur,1934年3月31日-)是一位出生于加拿大的商学学家。从1980年至1995年间,他曾担任美国哈佛商学院第七任院长。约翰·海克特·麦克
  • 耶日·鲁日茨基耶日·鲁日茨基(Jerzy Witold Różycki,1909年7月24日-1942年1月9日),波兰数学家和密码学家,20世纪30年代与马里安·雷耶夫斯基、亨里克·佐加尔斯基等人一同进行了对德国Enigma
  • 纳卡斯科洛区纳卡斯科洛区(西班牙语:Nacascolo),是哥斯达黎加的行政区,位于该国西北部瓜纳卡斯特省,由利韦里亚县负责管辖,面积324平方公里,2013年人口2,566人,人口密度每平方公里8人。
  • 莎图·梅凯莱-努梅拉莎图·梅凯莱-努梅拉(芬兰语:Satu Mäkelä-Nummela,1970年10月26日-),生于芬兰奥里马蒂拉,是一名芬兰女子射击运动员。她赢得了2008年北京奥运会女子飞碟多向的金牌。
  • 剪力墙剪力墙,也叫做抗震墙,结构墙或耐震壁,一般为钢筋混凝土造,在地震多发地区很常见。水平荷载是剪力墙的主要荷载,它使剪力墙受剪和受弯。为了满足使用要求,剪力墙往往开有门、窗等孔
  • 载波侦听多路访问载波侦听多路访问(英语:Carrier Sense Multiple Access,缩写:CSMA)是一种介质访问控制(MAC)的协议。载波侦听(英语:Carrier Sense)指任何连接到介质的设备在欲发送帧前,必须对介质进行