一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

基于C++的事件处理方法、装置、服务器及存储介质与流程

2021-11-03 20:28:00 来源:中国专利 TAG:

基于c 的事件处理方法、装置、服务器及存储介质
技术领域
1.本技术涉及计算机领域,尤其涉及一种基于c 的事件处理方法、装置、服务器及存储介质。


背景技术:

2.定时器在计算机领域是一种常用且不可或缺的技术,他是一系列函数的集合体,它可以使软件在固定的时间内自动执行某种操作或任务,目前,很多系统或者平台都通过使用定时器来完成周期性任务或特定时刻任务的执行,比如:实现自动控制、定时状态切换、延时处理等功能。
3.在传统的c 中,我们要调用定时器首先需要对不同系统的api做不同的适配,比如windows中我们使用的是createthreadapi,而在linux下我们则需要使用pthread,即传统方案中调用定时器的过程太过繁琐,需要操作人员掌握一定的相关知识,才能成功调用定时器,对于一些新手来说操作起来很不方便。


技术实现要素:

4.本技术实施例提供一种基于c 的事件处理方法、装置、服务器及存储介质,以解决传统c 中调用定时器太过繁琐的问题。
5.第一方面中,本技术实施例提供一种基于c 的事件处理方法,包括:
6.在c 环境中,通过设置函数接收事件处理任务,根据所述事件处理任务生成定时器调用请求,所述定时器调用请求携带执行时间参数和执行对象参数;
7.根据所述执行时间参数确定执行时间,根据所述执行对象参数确定执行对象,根据所述执行时间和所述执行对象生成目标定时器;
8.为所述目标定时器生成对应的目标定时器标识,并将所述目标定时器标识放入预设定时器标识列表中;
9.在所述执行时间,根据所述预设定时器标识列表中的所述目标定时器标识,调用所述目标定时器,以使所述目标定时器调用所述执行对象执行所述事件处理任务。
10.可选地,在本技术一些可能的实现方式中,所述通过设置函数接收事件处理任务,根据所述事件处理任务生成定时器调用请求的步骤,包括:
11.通过设置函数接收事件处理任务;
12.根据所述事件处理任务,确定定时器的类型;
13.根据所述定时器的类型,生成定时器调用请求。
14.可选地,在本技术一些可能的实现方式中,所述在所述执行时间,根据所述预设定时器标识列表中的所述目标定时器标识,调用所述目标定时器,以使所述目标定时器调用所述执行对象执行所述事件处理任务的步骤,包括:
15.创建线程,并将所述目标定时器标识传入所述线程;
16.在所述执行时间,根据所述线程中目标定时器标识与所述预设定时器标识列表的
第一匹配结果,判断所述预设定时器标识列表中是否存在所述目标定时器标识;
17.若存在,则调用所述目标定时器标识对应的目标定时器,以使所述目标定时器调用所述执行对象执行所述事件处理任务。
18.可选地,在本技术一些可能的实现方式中,在所述调用所述目标定时器标识对应的目标定时器的步骤之后的步骤之后,还包括:
19.判断所述事件处理任务是否已执行完成;
20.若是,则从所述预设定时器标识列表中清除所述目标定时器标识。
21.可选地,在本技术一些可能的实现方式中,所述从所述预设定时器标识列表中清除所述目标定时器标识的步骤,包括:
22.根据所述线程中目标定时器标识与所述预设定时器标识列表的第二匹配结果,判断所述预设定时器标识列表中是否存在所述目标定时器标识;
23.若存在,则从所述预设定时器标识列表清除所述目标定时器标识。
24.可选地,在本技术一些可能的实现方式中,所述为所述目标定时器生成对应的目标定时器标识,并将所述目标定时器标识放入预设定时器标识列表中的步骤,包括:
25.对预设定时器标识列表上锁;
26.为所述目标定时器生成对应的目标定时器标识;
27.将所述目标定时器标识放入预设定时器标识列表中;
28.对所述预设定时器标识列表解锁。
29.可选地,在本技术一些可能的实现方式中,所述从所述预设定时器标识列表中清除所述目标定时器标识的步骤,包括:
30.对所述预设定时器标识列表上锁;
31.从所述预设定时器标识列表中清除所述目标定时器标识;
32.对所述预设定时器标识列表解锁。
33.本技术实施例提供一种基于c 的事件处理装置,包括:
34.接收模块,用于在c 环境中,通过设置函数接收事件处理任务,根据所述事件处理任务生成定时器调用请求,所述定时器调用请求携带执行时间参数和执行对象参数;
35.第一生成模块,用于根据所述执行时间参数确定执行时间,根据所述执行对象参数确定执行对象,根据所述执行时间和所述执行对象生成目标定时器;
36.第二生成模块,用于为所述目标定时器生成对应的目标定时器标识,并将所述目标定时器标识放入预设定时器标识列表中;
37.调用模块,用于在所述执行时间,根据所述预设定时器标识列表中的所述目标定时器标识,调用所述目标定时器,以使所述目标定时器调用所述执行对象执行所述事件处理任务。
38.在一种实施例中,基于c 的事件处理装置,还包括:
39.判断模块,用于判断所述事件处理任务是否已执行完成;
40.清除模块,用于从所述预设定时器标识列表中清除所述目标定时器标识。
41.在一种实施例中,接收模块包括:
42.接收子模块,用于通过设置函数接收事件处理任务;
43.第一确定子模块,用于根据所述事件处理任务,确定定时器的类型;
44.第一生成子模块,用于根据所述定时器的类型,生成定时器调用请求。
45.在一种实施例中,第二生成模块包括:
46.第一锁定子模块,用于对预设定时器标识列表上锁;
47.第二生成子模块,用于为所述目标定时器生成对应的目标定时器标识;并将所述目标定时器标识放入预设定时器标识列表中;
48.第一解锁子模块,用于对所述预设定时器标识列表解锁。
49.在一种实施例中,调用模块包括:
50.创建子模块,用于创建线程,并将所述目标定时器标识传入所述线程;
51.判断子模块,用于在所述执行时间,根据所述线程中目标定时器标识与所述预设定时器标识列表的第一匹配结果,判断所述预设定时器标识列表中是否存在所述目标定时器标识;
52.调用子模块,用于若存在,则调用所述目标定时器标识对应的目标定时器,以使所述目标定时器调用所述执行对象执行所述事件处理任务。
53.在一种实施例中,清除模块包括:
54.第二锁定子模块,用于对所述预设定时器标识列表上锁;
55.清除子模块,用于从所述预设定时器标识列表中清除所述目标定时器标识;
56.第二解锁子模块,用于对所述预设定时器标识列表解锁。
57.在一种实施例中,清除子模块具体用于根据所述线程中目标定时器标识与所述预设定时器标识列表的第二匹配结果,判断所述预设定时器标识列表中是否存在所述目标定时器标识;若存在,则从所述预设定时器标识列表清除所述目标定时器标识。
58.本技术实施例提供一种服务器,包括:存储器、处理器以及存储在所述存储器上并可在所述处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现上述的基于c 的事件处理方法。
59.本技术实施例提供一种计算机可读存储介质,计算机可读存储介质存储有多条指令,指令适于处理器进行加载,以执行上述基于c 的事件处理方法中的步骤。
60.本技术实施例提供一种计算机程序产品或计算机程序,该计算机程序产品或计算机程序包括计算机指令,该计算机指令存储在计算机可读存储介质中;计算机设备的处理器从计算机可读存储介质读取该计算机指令,处理器执行该计算机指令,使得该计算机设备执行上述基于c 的事件处理方法中的步骤。
61.有益效果:本技术提供的基于c 的事件处理方法、装置、服务器及存储介质,基于该方法首先在c 环境中,通过设置函数接收事件处理任务,根据事件处理任务生成定时器调用请求,其中,定时器调用请求携带执行时间参数和执行对象参数;再根据执行时间和执行对象生成目标定时器;再为目标定时器生成对应的目标定时器标识,并将目标定时器标识放入预设定时器标识列表中;最后在执行时间,根据预设定时器标识列表中的目标定时器标识,调用目标定时器,以使目标定时器调用执行对象执行事件处理任务。本技术为目标定时器生成对应的目标定时器标识,调用定时器时只需在预设定时器标识列表中找到目标定时器标识,就能调用对应的定时器,不需要单独再对接口做适配,简化了调用定时器的步骤,使得一些刚入门的新手也能很好掌握如何调用定时器,提高了系统可操作性。
附图说明
62.为了更清楚地说明本技术实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本技术的一些实施例,对于本领域技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
63.图1a为本技术实施例提供的基于c 的事件处理系统的一种场景示意图。
64.图1b为本技术实施例提供的基于c 的事件处理系统的另一种场景示意图。
65.图2为本技术实施例提供的基于c 的事件处理方法的一种流程示意图。
66.图3为本技术实施例提供的基于c 的事件处理方法的另一种流程示意图。
67.图4a为本技术实施例提供的基于c 的事件处理装置的一种结构示意图。
68.图4b为本技术实施例提供的基于c 的事件处理装置的另一种结构示意图。
69.图5为本技术实施例提供的执行列表的结构示意图。
70.图6为本技术实施例提供的定时器类的结构示意图。
71.图7为本技术实施例提供的服务器设备的结构示意图。
具体实施方式
72.下面将结合本技术实施例中的附图,对本技术实施例中的技术方案进行清楚、完整地描述。显然,所描述的实施例仅仅是本技术一部分实施例,而不是全部的实施例。基于本技术中的实施例,本领域技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本技术保护的范围。
73.在本技术实施例的描述中,需要理解的是,说明书和权利要求书以及附图中的术语“第一”、“第二”等适用于区别类似的对象,而不必用于描述特定的顺序或先后次序,应理解这样使用的术语在适当的情况下可以互换,以便这里描述的实施例能够以除了在附图或者描述的内容以外的顺序实施。此外,术语“包括”以及它们的任何变形,意图在于覆盖不排他的包含。
74.在本技术实施例中,所述设置函数是指在c 环境中可以实现定时器功能的set函数,set函数函数包括settimeout和setinterval函数。
75.在本技术实施例中,所述清除函数是指在c 环境中可以实现清除功能的clear函数,clear函数函数包括cleartimeout和clearinterval函数。
76.在本技术实施例中,所述事件处理任务是可以通过定时器来实现的任务,例如:视频或音频的倍速播放、定点报时、自动控制设备的开关等,例如:在视频播放过程中,将原本是1倍速播放的视频切换成2倍速播放。
77.本技术实施例中,所述定时器是用于定时执行代码的功能,定时器的功能实现主要由set函数中的settimeout和setinterval函数来完成,settimeout函数用来指定某个函数或某段代码,在多少毫秒之后执行。它返回一个整数,表示定时器的编号,以后可以用来取消这个定时器,settimeout函数接受两个参数,第一个参数func|code是将要推迟执行的函数名或者一段代码,第二个参数delay是推迟执行的毫秒数,除了前两个参数,settimeout还允许添加更多的参数,例如执行参数,即:推迟执行的函数对应的参数,setinterval函数的用法与settimeout完全一致,区别仅仅在于setinterval指定某个任务
每隔一段时间就执行一次,也就是无限次的定时执行。
78.在本技术实施例中,所述执行时间参数包含执行时间和定时器类型的一段代码,所述执行对象参数包含要执行的方法和执行方法对应的参数的一段代码,所述执行时间指的是定时器在多长时间之后开始执行,即:执行上一操作到执行下一操作之间的间隔时间,例如:在视频播放过程中,执行时间指的是视频播放的前一帧画面与后一帧画面间的间隔时间;所述执行对象是执行的方法,例如:在视频播放过程中,执行对象是当上一帧视频画面播放完后,将下一帧视频播放画面放到视频播放窗口。
79.在本技术实施例中,定时器类型分为两种,一种是上述提到的单次执行的定时器settimeout,另一种是循环执行的定时器setinterval,例如:在视频播放时,视频对应的画面是逐帧进行播放,根据播放频率的不同,任意两相邻帧画面会以固定的时间间隔进行依次显示,则为了实现视频的正常播放,需要在视频的初始播放位置生成一定时器,此时,定时器类型为循环执行的定时器,若需要视频播放3分钟后暂停,此时,定时的操作只有一次,因此,定时器的类型为单次执行的定时器。
80.请参阅图1a和图1b,图1a和图1b为本技术实施例提供的基于c 的事件处理系统的场景示意图。
81.图1a所示的基于c 的事件处理系统的场景图包括:前端设备101和服务器102,其中:
82.前端设备102包括但不局限于视频或者音频的播放设备,在本技术提供的实施例中前端设备102为视频播放设备,负责视频的播放;
83.服务器102包括本地服务器和/或远程服务器等;
84.服务器102通过有线或者无线网络与前端设备101进行通信,控住前端设备101中的视频播放。
85.图1b所示的基于c 的事件处理系统的场景图中双实线的矩形框表示前端设备102的显示器边框,显示界面包含:视频播放画面、进度条、倍速播放选择,其中,x0.5表示视频以0.5倍速播放;x1表示视频以1倍速播放;x2表示视频以2倍速播放;x4表示视频以4倍速播放,x6表示视频以6倍速播放,当鼠标光标点击x2时系统会生成一个事件处理任务,在c 环境中服务器102通过设置函数接收事件处理任务,并执行以下操作来控制视频以2倍速播放:根据所述事件处理任务生成定时器调用请求,所述定时器调用请求携带执行时间参数和执行对象参数;根据所述执行时间参数确定执行时间,根据所述执行对象参数确定执行对象,根据所述执行时间和所述执行对象生成目标定时器;为所述目标定时器生成对应的目标定时器标识,并将所述目标定时器标识放入预设定时器标识列表中;在所述执行时间,根据所述预设定时器标识列表中的所述目标定时器标识,调用所述目标定时器,以使所述目标定时器调用所述执行对象执行所述事件处理任务。
86.需要说明的是,图1a和图1a所示的基于c 的事件处理系统的场景图仅仅是一个示例,本技术实施例描述的服务器以及场景是为了更加清楚的说明本技术实施例的技术方案,并不构成对于本技术实施例提供的技术方案的限定,本领域普通技术人员可知,随着系统的演变和新业务场景的出现,本技术实施例提供的技术方案对于类似的技术问题,同样适用。以下分别进行详细说明。需说明的是,以下实施例的描述顺序不作为对实施例优选顺序的限定。
87.请参阅图2,图2为本技术实施例提供的基于c 的事件处理方法的一种流程示意图,该方法包括:
88.步骤201:在c 环境中,通过设置函数接收事件处理任务,根据事件处理任务生成定时器调用请求,定时器调用请求携带执行时间参数和执行对象参数。
89.在一种实施例中,所述通过设置函数接收事件处理任务,根据所述事件处理任务生成定时器调用请求的步骤,包括:通过设置函数接收事件处理任务;根据所述事件处理任务,确定定时器的类型;根据所述定时器的类型,生成定时器调用请求。
90.所述设置函数是指set函数,所述事件处理任务是可以通过定时器来实现的任务,例如:视频或音频的倍速播放、定点报时、自动控制设备的开关等,例如,接收的事件处理任务是:将1倍速播放的视频切换成2倍速播放,因为在视频播放过程中,视频画面每两帧间都需要时间间隔,因此,第1帧画面播放完后到第2帧画面开始播放之前需要执行一次定时操作;第2帧画面播放完后到第3帧画面开始播放之前需要执行一次定时操作;第3帧画面播放完后到第4帧画面开始播放之前需要执行一次定时操作,以此类推,第n

1帧画面播放完后到第n帧画面开始播放之前需要执行一次定时操作,直至将视频播放完,因此,将1倍速播放的视频切换成2倍速播放的事件处理任务需要循环执行的定时器,即:生成的定时器调用器请求为携带执行时间参数和执行对象参数的循环执行的定时器

setinterval函数。
91.接收的事件处理任务是:视频播放3分钟后暂停,此时,定时的操作只有一次,因此,定时器的类型为单次执行的定时器,所以,生成的定时器调用器请求为携带执行时间参数和执行对象参数的单次执行的定时器

settimeout函数。
92.步骤202:根据执行时间参数确定执行时间,根据执行对象参数确定执行对象,根据执行时间和执行对象生成目标定时器。
93.所述执行时间参数包含执行时间和定时器类型的一段代码,所述执行对象参数包含要执行的方法和执行方法对应的参数的一段代码,所述执行时间指的是定时器在多长时间之后开始执行,即:执行上一操作到执行下一操作之间的间隔时间,例如:在视频播放过程中,执行时间指的是视频播放的前一帧画面与后一帧画面间的间隔时间;所述执行对象是执行的方法,例如:在视频播放过程中,执行对象是当上一帧视频画面播放完后,将下一帧视频播放画面放到视频播放窗口,当视频以1倍速播放时,视频播放前一帧画面与播放后一帧画面的间隔时间为n秒,若将1倍速播放的视频切换到m倍速播放时,则视频播放前一帧画面与播放后一帧画面的间隔时间为n/m秒,则事件处理任务是将1倍速播放的视频切换到2倍速播放时,视频播放前一帧画面与播放后一帧画面的间隔时间为n/2秒,此时,执行时间参数对应的执行时间为n/2秒。
94.图5为本技术实施例提供的执行列表的结构示意图,如图5所示在视频播放前,视频画面是一帧一帧地按照播放的先后顺序存储在本地存储器或者云存储中的执行列表中,在进行视频播放时,排列在执行列表中最前面的一帧画面最先被放到视频播放窗口,排列在后的画面依次被放到视频播放窗口进行播放,例如:首先第1帧画面被放到视频播放窗口进行播放,第1帧画面播放完后,等待执行时间到来后,执行对象将第2帧画面放到视频播放窗口,第2帧画面播放完后,再等待执行时间到来后,将第3帧画面放到视频播放窗口,以此类推,直到播放完最后一帧画面。
95.步骤203:为目标定时器生成对应的目标定时器标识,并将目标定时器标识放入预
设定时器标识列表中。
96.目标标识相当于目标定时器的id,每个目标定时器生成的目标定时器的id都是唯一的,将目标定时器唯一的id放入预设定时器标识列表中,调用该目标定时器时,就可以直接在预设的定时器标识列表中找到对应的id,根据id调用目标定时器,而不用通过api的适配来调用目标定时器,目标定时器id名称可以是:目标定时器生成时间 目标定时器类型,其中,目标定时器类型有两种,一种是t,代表循环执行的定时器,一种是s代表的事单次执行的定时器,例如:目标定时器id为:202104121425t,即为循环执行的定时器。
97.图6为本技术实施例提供的定时器类的结构示意图,如图6所示预设定时器标识列表放在定时器类中,其中,定时器类中还包括一些静态函数,例如:set函数和clear函数,定时器的功能实现主要依靠set函数,clear函数主要用来清除工作空间目,释放系统内存,其中,set函数包括:settimeout函数和setinterval函数,settimeout函数为单次执行的定时器,setinterval函数为循环执行的定时器,clear函数包括:cleartimeout函数和clearinterval函数,cleartimeout函数清除的是单次执行的操作,clearinterval函数清除的是循环执行的操作。
98.步骤204:在执行时间,根据预设定时器标识列表中的目标定时器标识,调用目标定时器,以使目标定时器调用执行对象执行事件处理任务。
99.在一种实施例中,所述在所述执行时间,根据所述预设定时器标识列表中的所述目标定时器标识,调用所述目标定时器,以使所述目标定时器调用所述执行对象执行所述事件处理任务的步骤,包括:创建线程,并将所述目标定时器标识传入所述线程;在所述执行时间,根据所述线程中目标定时器标识与所述预设定时器标识列表的第一匹配结果,判断所述预设定时器标识列表中是否存在所述目标定时器标识;若存在,则调用所述目标定时器标识对应的目标定时器,以使所述目标定时器调用所述执行对象执行所述事件处理任务。
100.以下内容为例来进行说明,例如:接收的事件处理任务是:将1倍速播放的视频切换成2倍速播放,视频以1倍速播放时,视频播放前一帧画面与播放后一帧画面的间隔时间为n秒,视频以2倍速播放时,视频播放前一帧画面与播放后一帧画面的间隔时间为n/2秒,即执行时间为n/2秒,在根据定时器调用请求生成目标定时器和目标定时器标识,将目标定时器标识放入预设定时器标识列表中之后,创建一个线程,将上述中的目标定时器标识202104121425t传入线程中,线程等待n/2秒,在n/2秒结束后判断预设定时器标识列表中是否目标定时器标识202104121425t,若存在则调用执行对象执行事件处理任务,即:将要播放的下一帧视频画面放到视频播放窗口。
101.请参阅图3,图3为本技术实施例提供的基于c 的事件处理方法的另一种流程示意图,该方法包括:
102.步骤301:接收事件处理任务。
103.所述事件处理任务是可以通过定时器来实现的任务,例如:视频或音频的倍速播放、定点报时、自动控制设备的开关等,例如:事件处理任务是将1倍速播放的视频切换成2倍速播放,根据事件处理任务生成定时器调用请求,定时器调用请求携带执行时间参数和执行对象参数,其中,若视频以1倍速播放时,视频播放前一帧画面与播放后一帧画面的间隔时间为n秒,则执行时间n/2秒,执行对象的作用是当上一帧视频画面播放完后,将下一帧
视频播放画面放到视频播放窗口。
104.步骤302:生成目标定时器。
105.以上述事件处理任务是将1倍速播放的视频切换成2倍速播放为例,则生成的目标定时器为循环执行的定时器,即:生成携带执行时间和执行对象的setinterval函数。
106.步骤303:对预设定时器标识列表上锁。
107.在生成目标定时器之后对预设定时器标识列表上锁,此步骤的目的是在进行下一步的步骤:将目标定时器标识放入预设定时器标识列表中时,阻止其他线程对预设定时器标识列表进行操作,可以避免多个线程同时对一个预设定时器列表进行操作,导致操作出错或者系统崩溃,提高了系统的稳定性。
108.步骤304:为目标定时器生成对应的目标定时器标识,并将目标定时器标识放入预设定时器标识列表中。
109.为上文所述的目标定时器生成的目标定时器标识202104121425t,并将202104121425t存入预设定时器标识列表中。
110.步骤305:对预设定时器标识列表解锁。
111.此步骤的目的是在对预设定时器标识列表进行写入操作完成后,允许其他线程对预设定时器标识列表进行操作。
112.步骤306:创建线程,并将目标定时器标识传入线程。
113.对预设定时器标识列表解锁后,创建一个线程,将上述中的目标定时器标识202104121425t传入该线程中。
114.步骤307:在执行时间,该线程判断设定时器标识列表中是否存在目标定时器标识。
115.在执行时间,该线程判断预设定时器标识列表中是否目标定时器标识202104121425t,若存在则执行步骤308的操作,若不存在,就结束该事件处理任务,图5所示,第1帧画面播放完后,等待n/2秒,第1个n/2秒到达后,判断预设定时器标识列表中是否目标定时器标识202104121425t,若存在,则将第2帧画面放到视频播放窗口;第2帧画面播放完后,再次等待n/2秒,第2个n/2秒到达后,判断预设定时器标识列表中是否目标定时器标识202104121425t,若存在,则将第3帧画面放到视频播放窗口;第3帧画面播放完后,再次等待n/2秒,第3个n/2秒到达后,判断预设定时器标识列表中是否目标定时器标识202104121425t,若存在,则将第4帧画面放到视频播放窗口,以此类推,第n

1帧画面播完后,再次等待n/2秒,第n

1个n/2秒到达后,判断预设定时器标识列表中是否目标定时器标识202104121425t,若存在,则将第n帧画面放到视频播放窗口,直至执行列表中所有的画面都播放完再结束改事件处理任务。
116.步骤308:调用目标定时器标识对应的目标定时器,以使目标定时器调用执行对象执行事件处理任务。
117.在设定时器标识列表中找到目标定时器标识202104121425t后,调用目标定时器标识202104121425t对应的目标定时器,使视频中两相邻帧画面通过目标定时器以固定的时间间隔进行依次播放,直至视频播放完成。
118.步骤309:事件处理任务是否已执行完成。
119.判断视频播放任务是否已执行完成,若执行完成则执行步骤309的操作,若没有执
行完成则执行步骤310的操作。
120.步骤310:等待t秒。
121.若事件任务还没有执行完成,则等待t秒,再次执行步骤309的操作,判断事件处理任务是否已执行完成,其中,等待时间t根据实际需求来设定,在此不做限定。
122.步骤311:对预设定时器标识列表上锁。
123.在事件任务处理完成后,即:上述中的视频以2倍速播放完成后,需要对预设定时器标识列表中的目标定时器标识进行清除,在进行清除操作之前对预设定时器进行上锁,目的是阻止其他线程对预设定时器标识列表进行操作,可以避免多个线程同时对一个预设定时器列表进行操作,导致操作出错或者系统崩溃,提高了系统的稳定性。
124.步骤312:预设定时器标识列表中是否存在目标定时器标识。
125.在进行清除操作之前首先判断预设定时器标识列表中是否存在目标定时器标识,若存在,则执行步骤303的操作,若不存在,就结束该事件处理任务。
126.步骤313:从预设定时器标识列表清除目标定时器标识。
127.当预设定时器标识列表中存在目标定时器标识时,调用清除函数从预设定时器列表中清除目标定时器标识202104121425t,若目标定时器为循环执行的定时器,则调用clearinterval函数来清除目标定时器标识;若目标定时器为单次执行的定时器,则调用cleartimeout函数来清除目标定时器标识,此步骤目的是为接收下一个事件处理任务做准备,若该目标定时器标识没有清除就无法执行下一个不同的事件任务。
128.步骤314:对预设定时器标识列表解锁。
129.在对预设定时器标识列表中的目标定时器标识进行清除操作之后,对预设定时器标识列表解锁,目的是允许其他线程对预设定时器标识列表进行操作。
130.由上述方法可知,本技术提供一种应用于计算机领域的基于c 的事件处理方法,首先在c 环境中,通过设置函数接收事件处理任务,根据事件处理任务生成定时器调用请求,定时器调用请求携带执行时间参数和执行对象参数;再根据执行时间和执行对象生成目标定时器;再为目标定时器生成对应的目标定时器标识,并将目标定时器标识放入预设定时器标识列表中;最后在执行时间,根据预设定时器标识列表中的目标定时器标识,调用目标定时器,以使目标定时器调用执行对象执行事件处理任务。本技术为目标定时器生成对应的目标定时器标识,调用定时器时只需在预设定时器标识列表中找到目标定时器标识,就能调用对应的定时器,不需要单独再对接口做适配,简化了调用定时器的步骤,提高了系统可操作性。
131.请参阅图4a和图4b,图4a为本技术实施例提供的基于c 的事件处理装置的一种结构示意图,该基于c 的事件处理装置包括以下单元:
132.接收模块401,用于在c 环境中,通过设置函数接收事件处理任务,根据所述事件处理任务生成定时器调用请求,所述定时器调用请求携带执行时间参数和执行对象参数;
133.第一生成模块402,用于根据所述执行时间参数确定执行时间,根据所述执行对象参数确定执行对象,根据所述执行时间和所述执行对象生成目标定时器;
134.第二生成模块403,用于为所述目标定时器生成对应的目标定时器标识,并将所述目标定时器标识放入预设定时器标识列表中;
135.调用模块404,用于在所述执行时间,根据所述预设定时器标识列表中的所述目标
定时器标识,调用所述目标定时器,以使所述目标定时器调用所述执行对象执行所述事件处理任务。
136.在一种实施例中,所述接收模块401包括:
137.接收子模块,用于通过设置函数接收事件处理任务;
138.第一确定子模块,用于根据所述事件处理任务,确定定时器的类型;
139.第一生成子模块,用于根据所述定时器的类型,生成定时器调用请求。
140.在一种实施例中,所述第二生成模块403包括:
141.第一锁定子模块,用于对预设定时器标识列表上锁;
142.第二生成子模块,用于为所述目标定时器生成对应的目标定时器标识;并将所述目标定时器标识放入预设定时器标识列表中;
143.第一解锁子模块,用于对所述预设定时器标识列表解锁。
144.在一种实施例中,所述调用模块404包括:
145.创建子模块,用于创建线程,并将所述目标定时器标识传入所述线程;
146.判断子模块,用于在所述执行时间,根据所述线程中目标定时器标识与所述预设定时器标识列表的第一匹配结果,判断所述预设定时器标识列表中是否存在所述目标定时器标识;
147.调用子模块,用于若存在,则调用所述目标定时器标识对应的目标定时器,以使所述目标定时器调用所述执行对象执行所述事件处理任务。
148.图4b为本技术实施例提供的基于c 的事件处理装置的另一种结构示意图,该基于c 的事件处理装置还包括以下模块:
149.判断模块405,用于判断所述事件处理任务是否已执行完成;
150.清除模块406,用于从所述预设定时器标识列表中清除所述目标定时器标识。
151.在一种实施例中,清除模块406包括:
152.第二锁定子模块,用于对所述预设定时器标识列表上锁;
153.清除子模块,用于从所述预设定时器标识列表中清除所述目标定时器标识;
154.第二解锁子模块,用于对所述预设定时器标识列表解锁。
155.在一种实施例中,清除子模块具体用于根据所述线程中目标定时器标识与所述预设定时器标识列表的第二匹配结果,判断所述预设定时器标识列表中是否存在所述目标定时器标识;若存在,则从所述预设定时器标识列表清除所述目标定时器标识。
156.本技术实施例还提供一种服务器,如图7所示,其示出了本技术实施例所涉及的服务器的结构示意图,具体来讲:
157.该服务器包括一个或者一个以上处理核心的处理器701、一个或一个以上计算机可读存储介质的存储器702、电源704和输入单元703等部件。本领域技术人员可以理解,图7中示出的服务器结构并不构成对服务器的限定,可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件布置。其中:
158.处理器701是该服务器的控制中心,利用各种接口和线路连接整个服务器的各个部分,通过运行或执行存储在存储器702内的软件程序和/或模块,以及调用存储在存储器702内的数据,执行服务器的各种功能和处理数据,从而对服务器进行整体监控。可选的,处理器701可包括一个或多个处理核心;优选的,处理器701可集成应用处理器和调制解调处
理器,其中,应用处理器主要处理操作系统、用户界面和应用程序等,调制解调处理器主要处理无线通信。可以理解的是,上述调制解调处理器也可以不集成到处理器701中。
159.存储器702可用于存储软件程序以及模块,处理器701通过运行存储在存储器702的软件程序以及模块,从而执行各种功能应用以及数据处理。存储器702可主要包括存储程序区和存储数据区,其中,存储程序区可存储操作系统、至少一个功能所需的应用程序(比如声音播放功能、图像播放功能等)等;存储数据区可存储根据服务器的使用所创建的数据等。此外,存储器702可以包括高速随机存取存储器,还可以包括非易失性存储器,例如至少一个磁盘存储器件、闪存器件、或其他易失性固态存储器件。相应地,存储器702还可以包括存储器控制器,以提供处理器701对存储器702的访问。
160.服务器还包括给各个部件供电的电源704,优选的,电源704可以通过电源管理系统与处理器701逻辑相连,从而通过电源管理系统实现管理充电、放电、以及功耗管理等功能。电源704还可以包括一个或一个以上的直流或交流电源、再充电系统、电源故障检测电路、电源转换器或者逆变器、电源状态指示器等任意组件。
161.该服务器还可包括输入单元703,该输入单元703可用于接收输入的数字或字符信息,以及产生与用户设置以及功能控制有关的键盘、鼠标、操作杆、光学或者轨迹球信号输入。
162.尽管未示出,服务器还可以包括显示处理器等,在此不再赘述。具体在本实施例中,服务器中的处理器701会按照如下的指令,将一个或一个以上的应用程序的进程对应的可执行文件加载到存储器702中,并由处理器701来运行存储在存储器702中的应用程序,从而实现各种功能,如下:
163.在c 环境中,通过设置函数接收事件处理任务,根据所述事件处理任务生成定时器调用请求,所述定时器调用请求携带执行时间参数和执行对象参数;
164.根据所述执行时间参数确定执行时间,根据所述执行对象参数确定执行对象,根据所述执行时间和所述执行对象生成目标定时器;
165.为所述目标定时器生成对应的目标定时器标识,并将所述目标定时器标识放入预设定时器标识列表中;
166.在所述执行时间,根据所述预设定时器标识列表中的所述目标定时器标识,调用所述目标定时器,以使所述目标定时器调用所述执行对象执行所述事件处理任务。
167.在上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述的部分,可以参见上文针对基于c 的事件处理方法的详细描述,此处不再赘述。
168.本领域普通技术人员可以理解,上述实施例的各种方法中的全部或部分步骤可以通过指令来完成,或通过指令控制相关的硬件来完成,该指令可以存储于一计算机可读存储介质中,并由处理器进行加载和执行。
169.为此,本技术实施例提供一种计算机可读存储介质,其中存储有多条指令,该指令能够被处理器进行加载,以执行本技术实施例所提供的任一种基于c 的事件处理方法中的步骤。例如,该指令可以执行如下步骤:
170.在c 环境中,通过设置函数接收事件处理任务,根据所述事件处理任务生成定时器调用请求,所述定时器调用请求携带执行时间参数和执行对象参数;
171.根据所述执行时间参数确定执行时间,根据所述执行对象参数确定执行对象,根
据所述执行时间和所述执行对象生成目标定时器;
172.为所述目标定时器生成对应的目标定时器标识,并将所述目标定时器标识放入预设定时器标识列表中;
173.在所述执行时间,根据所述预设定时器标识列表中的所述目标定时器标识,调用所述目标定时器,以使所述目标定时器调用所述执行对象执行所述事件处理任务。
174.以上各个操作的具体实施可参见前面的实施例,在此不再赘述。
175.其中,该计算机可读存储介质可以包括:只读存储器(rom,read only memory)、随机存取记忆体(ram,random access memory)、磁盘或光盘等。
176.由于该计算器可读存储介质中所存储的指令,可以执行本技术实施例所提供的任一种基于c 的事件处理方法中的步骤,因此,可以实现本技术实施例所提供的任一种基于c 的事件处理方法所能实现的有益效果,详见前面的实施例,在此不再赘述。
177.以上对本技术实施例所提供的一种基于c 的事件处理方法、装置、服务器及存储介质进行了详细介绍,本文中应用了具体个例对本技术的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本技术的方法及其核心思想;同时,对于本领域的技术人员,依据本技术的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本技术的限制。
再多了解一些

本文用于企业家、创业者技术爱好者查询,结果仅供参考。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献