一种事件驱动方法、装置、设备及可读存储介质与流程

文档序号:15492102发布日期:2018-09-21 20:48阅读:132来源:国知局

本发明涉及计算机应用技术领域,特别是涉及一种事件驱动方法、装置、设备及可读存储介质。



背景技术:

在当今快节奏的生活中,人们迫切需求具有更强计算速度和事件处理能力的高性能计算机。

在计算机软件中,往往采用等待机制。即,为了等待某件事情的发生,需要不断地检测某些判断变量,直到达到预设条件之后,才进行相应的处理。而在不断的检测某些变量的过程中,无形中浪费了很多计算机资源,进而限制了计算机提升计算速度、事件处理能力。

综上所述,如何有效地解决提升计算机性能等问题,是目前本领域技术人员急需解决的技术问题。



技术实现要素:

本发明的目的是提供一种事件驱动方法、装置、设备及可读存储介质,以实减少占用计算机资源,提升计算机性能。

为解决上述技术问题,本发明提供如下技术方案:

一种事件驱动方法,包括:

利用select函数监听异步套接字的fd句柄,并根据所述fd句柄判断所述异步套接字上的目标事件是否可读;

若所述目标事件可读,则读取所述目标事件并获取所述目标事件所属的事件类型;

选用与所述事件类型对应的事件处理方式处理所述目标事件。

优选地,所述基于所述事件类型对应的处理方式对所述目标事件进行处理,包括:

当所述事件类型为消息事件时,利用所述目标事件对应的预设处理函数对所述目标事件进行处理。

优选地,所述基于所述事件类型对应的处理方式对所述目标事件进行处理,包括:

当所述事件类型为时间事件时,创建定时线程;

当达到预设等待时长之后,通过所述定时线程发送预设自定义协议的目标数据到目标异步套接字上,以便所述目标异步套接字激发预设回调函数来处理所述目标事件。

优选地,所述基于所述事件类型对应的处理方式对所述目标事件进行处理,包括:

当所述事件类型为文件描述符事件时,通过对应的文件描述符将目标用户指定的套接字调整为异步模式;

通过所述select函数监控所述套接字,当在所述套接字上发生注册事件时,回调所述目标用户注册的回调函数。

一种事件驱动装置,包括:

监听模块,用于利用select函数监听异步套接字的fd句柄,并根据所述fd句柄判断所述异步套接字上的目标事件是否可读;

目标事件及事件类型获取模块,用于若所述目标事件可读,则读取所述目标事件并获取所述目标事件所属的事件类型;

目标事件处理模块,用于选用与所述事件类型对应的事件处理方式处理所述目标事件。

优选地,所述目标事件处理模块,包括:

信息事件处理单元,用于当所述事件类型为消息事件时,利用所述目标事件对应的预设处理函数对所述目标事件进行处理。

优选地,所述目标事件处理模块,包括:

时间事件处理单元,用于当所述事件类型为时间事件时,创建定时线程;当达到预设等待时长之后,通过所述定时线程发送预设自定义协议的目标数据到目标异步套接字上,以便所述目标异步套接字激发预设回调函数来处理所述目标事件。

优选地,所述目标事件处理模块,包括:

文件描述符事件处理单元,用于当所述事件类型为文件描述符事件时,通过对应的文件描述符将目标用户指定的套接字调整为异步模式;通过所述select函数监控所述套接字,当在所述套接字上发生注册事件时,回调所述目标用户注册的回调函数。

一种事件驱动设备,包括:

存储器,用于存储计算机程序;

处理器,用于执行所述计算机程序时实现上述事件驱动方法的步骤。

一种可读存储介质,所述可读存储介质上存储有计算机程序,所述计算机程序被处理器执行时实现上述事件驱动方法的步骤。

应用本发明实施例所提供的方法,利用select函数监听异步套接字的fd句柄,并根据fd句柄判断异步套接字上的目标事件是否可读;若目标事件可读,则读取目标事件并获取目标事件所属的事件类型;选用与事件类型对应的事件处理方式处理目标事件。利用select函数监听异步套接字的fd句柄实现异步机制。即,当有目标事件可以读取时,此时可以直接读取该异步套接字上的数据而不会阻塞。另外,相较于现有的等待机制,本发明实施例提供的方法可以无需不停地检查输入设备,而是等待目标事件,也就是等待消息的到来。由于实现了异步机制,每个输入的目标事件会被排进队列,等待根据事件类型对应的处理方式进行处理。如果没有消息在等待,则将控制交回给操作系统,以运行其他程序,可减少占用计算机资源,提升计算机的计算速度和事件处理能力,进而提升计算机性能。

相应地,本发明实施例还提供了一种事件驱动装置、设备及可读存储介质,具有上述技术效果,在此不再赘述。

附图说明

为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。

图1为本发明实施例中一种事件驱动方法的实施流程图;

图2为本发明实施例中一种事件驱动方法的实施流程图;

图3为本发明实施例中一种事件驱动方法的实施流程图;

图4为本发明实施例中一种事件驱动方法的实施流程图;

图5为应用本发明实施例提供的一种事件驱动程序的事件模块的事件模型示意图;

图6为本发明实施例中一种事件驱动装置的结构示意图;

图7为本发明实施例中一种事件驱动设备的结构示意图。

具体实施方式

本发明的核心是提供一种事件驱动方法,在处理事件时,抛去传统的过程式程序中的等待机制,而是引入事件编程。其中,在等待机制中,为了等待某件事情的发生,需要不断地检测某些判断变量。本发明引入事件编程后,大大简化了这种过程,事件驱动程序与过程式程序最大的不同就在于,事件驱动程序无需不停地检查输入设备,而是等待消息的到来,每个输入的消息会被排进队列,等待根据事件类型对应的处理方式进行处理。如果没有消息在等待,则程序会把控制交回给操作系统,以运行其他程序,以此来减少占用计算机资源,提升计算机计算速度和处理能力,进一步提升计算机性能。

本发明的另一个核心是提供一种事件驱动装置、设备及可读存储介质,具有上述技术效果,在此不再赘述。

为了使本技术领域的人员更好地理解本发明方案,下面结合附图和具体实施方式对本发明作进一步的详细说明。显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。

实施例一:

请参考图1,图1为本发明实施例中一种事件驱动方法的流程图,该方法包括以下步骤:

s101、利用select函数监听异步套接字的fd句柄,并根据fd句柄判断异步套接字上的目标事件是否可读。

在本发明实施例中,利用select函数监听异步套接字的fd句柄,并根据fd句柄判断异步套接字上的目标事件是否可读。

其中,目标事件可以包括来自用户的(如鼠标、键盘事件等)、来自硬件的(如时钟事件等)和来自软件的(如操作系统、应用程序本身等)的事件。

s102、若目标事件可读,则读取目标事件并获取目标事件所属的事件类型。

当该目标事件可读取时,可以直接读取该目标事件并获取该目标事件所属的事件类型。具体的,可以根据预先定义的判断标准,获取目标事件的事件类型。

s103、选用与事件类型对应的事件处理方式处理目标事件。

在本发明实施例中,可以预先设置不同的事件类型分别对应何种事件处理方式。当然针对同一种事件类型的处理方式在具体实现上可以相同,也可以不同。其中,事件类型可以分为消息事件、时间事件和文件描述符事件。选用与事件类型对应的事件处理方式处理目标事件,还可以提高目标事件的处理效率及准确率。

应用本发明实施例所提供的方法,应用本发明实施例所提供的方法,利用select函数监听异步套接字的fd句柄,并根据fd句柄判断异步套接字上的目标事件是否可读;若目标事件可读,则读取目标事件并获取目标事件所属的事件类型;选用与事件类型对应的事件处理方式处理目标事件。利用select函数监听异步套接字的fd句柄实现异步机制。即,当有目标事件可以读取时,此时可以直接读取该异步套接字上的数据而不会阻塞。另外,相较于现有的等待机制,本发明实施例提供的方法可以无需不停地检查输入设备,而是等待目标事件,也就是等待消息的到来。由于实现了异步机制,每个输入的目标事件会被排进队列,等待根据事件类型对应的处理方式进行处理。如果没有消息在等待,则将控制交回给操作系统,以运行其他程序,可减少占用计算机资源,提升计算机的计算速度和事件处理能力,进而提升计算机性能。

需要说明的是,基于上述实施例一,本发明实施例还提供了相应的改进方案。在后续实施例中涉及与上述实施例一中相同步骤或相应步骤之间可相互参考,相应的有益效果也可相互参照,在下文的改进实施例中不再一一赘述。

实施例二:

请参考图2,图2为本发明实施例中一种事件驱动方法的流程图,该方法包括以下步骤:

s201、利用select函数监听异步套接字的fd句柄,并根据fd句柄判断异步套接字上的目标事件是否可读;

s202、若目标事件可读,则读取目标事件并获取目标事件所属的事件类型;

s203、当事件类型为消息事件时,利用目标事件对应的预设处理函数对目标事件进行处理。

在步骤s203中,读取到事件类型为消息事件的目标事件之后,令可以应用进程利用目标事件对应的预设处理函数对目标事件进行处理。应用程序回调函数循环监视应用程序队列,根据消息包参数处理不同事务,执行完后将控制权释放。这样做的好处是将主动权让给操作系统,由系统调度分配执行时间,实现多任务执行。

也就是说,本实施例在具备实施例一所具有的有益效果之外,还因其实现了消息事件处理,使得计算机系统可以调度分配执行时间,实现多任务执行,进一步提升计算机的处理能力。

实施例三:

请参考图3,图3为本发明实施例中一种事件驱动方法的流程图,该方法包括以下步骤:

s301、利用select函数监听异步套接字的fd句柄,并根据fd句柄判断异步套接字上的目标事件是否可读;

s302、若目标事件可读,则读取目标事件并获取目标事件所属的事件类型;

s303、当事件类型为时间事件时,创建定时线程;

s304、当达到预设等待时长之后,通过定时线程发送预设自定义协议的目标数据到目标异步套接字上,以便目标异步套接字激发预设回调函数来处理目标事件。

为便于描述,下面将上述步骤s303和s304结合起来进行说明。

当目标事件为时间事件时,即当用户注册一个时间处理事件时,可以在模块内部创建一个定时线程用来等待时间到达预定时长时,通过该定时线程发送自定义协议的数据到目标异步套接字上,在目标异步套接字上激发读取事件后根据自定义协议设定回调用户注册的时间处理函数。这里使用异步套接字可以保证事件模块中其他事件与时间事件不冲突,不会打断其他事件处理过程。

也就是说,在本实施例中,在具备实施例一所具有的有益效果之外,在本实施例中,还实现了时间事件处理。本实施例提供的时间事件处理还因使用异步套接字,从而保证了事件模块中其他事件与时间事件不冲突,不会打断其他事件处理过程不会干扰,保证了计算机事件处理的稳定性,进一步提升了计算机性能。

实施例四:

请参考图4,图4为本发明实施例中一种事件驱动方法的流程图,该方法包括以下步骤:

s401、利用select函数监听异步套接字的fd句柄,并根据fd句柄判断异步套接字上的目标事件是否可读;

s402、若目标事件可读,则读取目标事件并获取目标事件所属的事件类型;

s403、当事件类型为文件描述符事件时,通过对应的文件描述符将目标用户指定的套接字调整为异步模式;

s404、通过select函数监控套接字,当在套接字上发生注册事件时,回调目标用户注册的回调函数。

为便于描述,下面将上述步骤s403和s404结合起来进行说明。

当目标事件的事件类型为文件描述符事件时,通过相应的文件描述符把目标用户注册要处理的套接字改为异步模式,通过select函数同时监控用户多个文件描述符和内部的时间事件使用的套接字文件描述符。如此,目标用户便可以针对文件描述符对回调函数进行注册、读写、关闭等操作。

也就是说,在本实施例中,在具备实施例一所具有的有益效果之外,在本实施例中,还实现了文件描述符事件处理。即用户可以在利用本发明实施例所提供的方法可以方便地针对文件描述符对回调函数进行注册、读写、关闭等操作。

为便于本领域技术人员应用本发明实施例所提供的事件驱动方法,下面以具体的应用场景为例,对如何在实际应用本发明实施例所提供的事件驱动方法进行说明。

请参考图5,在实际应用中,可将实现上述发明实施例中提供的事件驱动方法的计算机程序作为功能模块或公共模块的事件模块,以便用户使用事件驱动方式进行编程。

该事件模块对事件源进行监测,当发生目标事件之后,进行事件排队,并根据预先设置的处理方式,进行事件分配,即通知相应事件处理器处理该目标事件。当然若目标事件为时间事件还涉及创建定时线程,以便到达预设时长之后对该时间事件进行处理。其中,能够产生事件的对象都可以作为事件源,如io输入、输出设备,时钟、定时器、网络接口等。

相应于上面的方法实施例,本发明实施例还提供了一种事件驱动装置,下文描述的事件驱动装置与上文描述的事件驱动方法可相互对应参照。

参见图6所示,该装置包括以下模块:

监听模块101,用于利用select函数监听异步套接字的fd句柄,并根据fd句柄判断异步套接字上的目标事件是否可读;

目标事件及事件类型获取模块102,用于若目标事件可读,则读取目标事件并获取目标事件所属的事件类型;

目标事件处理模块103,用于选用与事件类型对应的事件处理方式处理目标事件。

应用本发明实施例所提供的装置,应用本发明实施例所提供的方法,利用select函数监听异步套接字的fd句柄,并根据fd句柄判断异步套接字上的目标事件是否可读;若目标事件可读,则读取目标事件并获取目标事件所属的事件类型;选用与事件类型对应的事件处理方式处理目标事件。利用select函数监听异步套接字的fd句柄实现异步机制。即,当有目标事件可以读取时,此时可以直接读取该异步套接字上的数据而不会阻塞。另外,相较于现有的等待机制,本发明实施例提供的方法可以无需不停地检查输入设备,而是等待目标事件,也就是等待消息的到来。由于实现了异步机制,每个输入的目标事件会被排进队列,等待根据事件类型对应的处理方式进行处理。如果没有消息在等待,则将控制交回给操作系统,以运行其他程序,可减少占用计算机资源,提升计算机的计算速度和事件处理能力,进而提升计算机性能。

在本发明的一种具体实施方式中,目标事件处理模块103,包括:

信息事件处理单元,用于当事件类型为消息事件时,利用目标事件对应的预设处理函数对目标事件进行处理。

在本发明的一种具体实施方式中,目标事件处理模块103,包括:

时间事件处理单元,用于当事件类型为时间事件时,创建定时线程;当达到预设等待时长之后,通过定时线程发送预设自定义协议的目标数据到目标异步套接字上,以便目标异步套接字激发预设回调函数来处理目标事件。

在本发明的一种具体实施方式中,目标事件处理模块103,包括:

文件描述符事件处理单元,用于当事件类型为文件描述符事件时,通过对应的文件描述符将目标用户指定的套接字调整为异步模式;通过select函数监控套接字,当在套接字上发生注册事件时,回调目标用户注册的回调函数。

相应于上面的方法实施例,本发明实施例还提供了一种事件驱动设备,下文描述的一种事件驱动设备与上文描述的一种事件驱动方法可相互对应参照。

参见图7所示,该事件驱动设备包括:

存储器d1,用于存储计算机程序;

处理器d2,用于执行计算机程序时实现上述方法实施例的事件驱动方法的步骤。

在实际应用中,事件驱动设备具体可以为采用本发明实施例所提供的事件驱动方法的事件监视器。即,采用异步机制的时间监视器可减少系统资源开销,提高响应速度。

相应于上面的方法实施例,本发明实施例还提供了一种可读存储介质,下文描述的一种可读存储介质与上文描述的一种事件驱动方法可相互对应参照。

一种可读存储介质,可读存储介质上存储有计算机程序,计算机程序被处理器执行时实现上述方法实施例的事件驱动方法的步骤。

本说明书中各个实施例采用递进的方式描述,每个实施例重点说明的都是与其它实施例的不同之处,各个实施例之间相同或相似部分互相参见即可。对于实施例公开的装置而言,由于其与实施例公开的方法相对应,所以描述的比较简单,相关之处参见方法部分说明即可。

专业人员还可以进一步意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、计算机软件或者二者的结合来实现,为了清楚地说明硬件和软件的可互换性,在上述说明中已经按照功能一般性地描述了各示例的组成及步骤。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本发明的范围。

结合本文中所公开的实施例描述的方法或算法的步骤可以直接用硬件、处理器执行的软件模块,或者二者的结合来实施。软件模块可以置于随机存储器(ram)、内存、只读存储器(rom)、电可编程rom、电可擦除可编程rom、寄存器、硬盘、可移动磁盘、cd-rom、或技术领域内所公知的任意其它形式的存储介质中。

本文中应用了具体个例对本发明的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本发明的技术方案及其核心思想。应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以对本发明进行若干改进和修饰,这些改进和修饰也落入本发明权利要求的保护范围内。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1