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

业务处理方法及装置与流程

2022-05-26 23:31:00 来源:中国专利 TAG:


1.本技术涉及电子设备技术领域,尤其涉及业务处理方法及装置。


背景技术:

2.随着程序规模越来越大,对程序的稳定性的要求越来越高。为了使程序实现某种业务功能,在开发程序时,经常需要在程序中集成第三方公司的组件。由于组件是第三方公司提供的,稳定性较差,从而导致集成该组件的程序所对应的进程出现运行崩溃的现象。
3.目前,为了保证程序的正常运行,采用“看门狗”设计方式,即在利用程序进行业务处理的过程中,若检测到程序对应的进程停止运行,则立即进行恢复。然而,该设计方式仅是从维护角度考虑,并没有从深层次保证程序的稳定性。


技术实现要素:

4.为克服相关技术中存在的问题,本技术提供了业务处理方法及装置。
5.根据本技术实施例的第一方面,提供一种业务处理方法,应用于电子设备,所述电子设备用于执行第一进程,所述方法包括:
6.响应于接收到的待处理业务请求,创建共享内存区域,并确定启动参数;其中,所述启动参数包括共享内存区域的信息;
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.基于所述第三共享内存区域的名称,从所述第三共享内存区域中读取解码后的待播放视频,并播放所述解码后的待播放视频。
34.可选的,所述方法还包括:
35.所述待播放视频的数目为一个或多个;
36.所述创建共享内存区域,并确定启动参数,包括:
37.在所述视频播放请求指示多个待播放视频的情况下,创建多个共享内存区域,并确定多个启动参数;其中,所述启动参数与所述共享内存区域一一对象;每个启动参数用于启动一个第二进程。
38.可选的,所述共享内存区域的信息包括所述共享内存区域的名称和/或大小;
39.所述创建共享内存区域,并确定启动参数,包括:
40.在所述第二进程处于未运行状态的情况下,创建共享内存区域,并确定启动参数;
41.所述方法还包括:
42.在所述第二进程处于运行状态的情况下,根据所述待处理业务请求生成第一处理命令。
43.可选的,所述方法还包括:
44.在所述共享内存区域中写入第一心跳数据;其中,所述第一心跳数据用于指示所述第二进程根据所述第一心跳数据生成第一响应结果,并将所述第一响应结果写入至所述共享内存区域;
45.在第一预设时间内未从所述共享内存区域中读取到所述第一响应结果的情况下,停止所述第二进程,并启动新的第二进程。
46.根据本技术实施例的第二方面,提供一种业务处理方法,应用于电子设备,所述电子设备用于执行第二进程,所述方法包括:
47.获取第一进程传递的启动参数,并根据所述启动参数进行启动;其中,所述启动参数包括共享内存区域的信息;
48.基于所述共享内存区域的信息,从所述共享内存区域中读取第一处理命令;其中,所述第一处理命令是第一进程响应于接收到的待处理业务请求生成的;
49.根据所述第一处理命令进行处理操作。
50.可选的,所述共享内存区域包括第一共享内存区域和第二共享内存区域;
51.所述从所述共享内存区域中读取第一处理命令,包括:
52.从所述第一共享内存区域中读取所述第一处理命令;
53.所述方法还包括:
54.将第一处理结果写入至所述第二共享内存区域,以使所述第一进程从所述第二共享区域内读取所述第一处理结果,以及根据所述第一处理结果进行相应的处理操作;其中,所述第一处理结果是根据所述第一处理命令进行相应的处理操作得到的。
55.可选的,所述第二共享内存区域对应于第二读信号量和第二写信号量;
56.所述将所述第一处理结果写入至所述第二共享内存区域,包括:
57.将所述第二写信号量设置为第四状态标识,并将所述第一处理结果写入至所述第二共享内存区域;其中,所述第四状态标识用于指示所述第二共享内存区域处于数据写入状态;
58.在所述第一处理结果写入完成的情况下,将所述第二写信号量设置为第五状态标识,并将所述第二读信号量设置为第六状态标识,以使所述第一进程响应于所述第二读信号量设置为第六状态标识,从所述第二共享内存区域中读取所述第一处理结果;其中,所述第五状态标识指示所述第二共享内存区域处于数据未写入状态,所述第六状态标识指示所述第二享内存区域处于数据读取状态。
59.可选的,所述将所述第一处理结果写入至所述第二共享内存区域,包括:
60.将所述第一处理结果写入至所述第二共享内存区域,并对所述第二共享内存区域进行加锁;
61.在所述第一处理结果写入完成的情况下,对所述第二共享内存区域进行解锁,以使所述第一进程从所述第二共享内存区域中读取所述第一处理结果。
62.可选的,所述第二进程包括解码进程,所述第一进程包括播放进程;所述第一处理命令包括视频加载命令;所述第一处理结果包括第一指示信息;
63.所述根据所述第一处理命令进行相应的处理操作,包括:
64.根据所述视频加载命令中的待播放视频的存储位置获取待播放视频,并对所述待播放视频进行解析,得到所述待播放视频的视频信息;
65.创建第三共享内存区域;其中,所述第三共享内存区域用于存储解码后的待播放视频;
66.基于第二预设数据格式,对所述第三共享内存区域的信息和所述视频信息进行封装,得到第一指示信息;
67.所述将所述第一处理结果写入至所述第二共享内存区域,包括:
68.将所述第一指示信息写入至所述第二共享内存区域,以使所述第一进程根据所述第一指示信息生成视频播放命令,并将所述视频播放命令写入至所述第一共享内存区域。
69.可选的,所述第三共享内存区域的信息包括第三共享内存区域的名称;
70.所述方法还包括:
71.在从所述第一共享内存区域内读取到视频播放命令的情况下,对所述待播放视频进行解码;
72.将解码后的待播放视频写入至所述第三共享内存区域,以使所述第一进程基于所述第三共享内存区域的名称,从所述第三共享内存区域中读取解码后的待播放视频,并播放所述解码后的待播放视频。
73.可选的,所述方法还包括:
74.在所述共享内存区域中写入第二心跳数据;其中,所述第二心跳数据用于指示所述第一进程根据所述第二心跳数据生成第二响应结果,并将所述第二响应结果写入至所述共享内存区域;
75.在第二预设时间内未从所述共享内存区域中读取到所述第二响应结果的情况下,执行停止运行操作。
76.根据本技术实施例的第三方面,提供一种业务处理装置,应用于电子设备,所述电子设备用于执行第一进程,所述装置包括:
77.请求处理模块,用于响应于接收到的待处理业务请求,创建共享内存区域,并确定启动参数;其中,所述启动参数包括共享内存区域的信息;
78.参数处理模块,用于将所述启动参数传递至第二进程,以使所述第二进程根据所述启动参数进行启动;其中,第二进程指示实现所述待处理业务请求所使用的功能模块;
79.命令生成模块,用于根据所述待处理业务请求生成第一处理命令;
80.第一通信模块,用于将所述第一处理命令写入至共享内存区域,以使所述第二进程基于所述共享内存的信息,从所述共享内存区域中读取所述第一处理命令,并根据所述第一处理命令进行处理操作。
81.可选的,所述第二进程指示第三方组件;所述共享内存区域包括第一共享内存区域和所述第二共享内存区域;所述第一共享内存区域用于存储第一进程写入的数据,所述第二共享内存区域用于存储供所述第一进程读取的数据;
82.所述第一通信模块具体用于:
83.将所述第一处理命令写入至所述第一共享内存区域,以使所述第二进程从所述第一共享内存区域中读取所述第一处理命令,并根据所述第一处理命令进行相应的处理操作,得到第一处理结果,以及将所述第一处理结果写入至所述第二共享内存区域;
84.所述第一通信模块还用于:
85.从所述第二共享内存区域中读取第一处理结果,并根据所述第一处理结果进行相应的处理操作。
86.可选的,所述第一共享内存区域对应于第一读信号量和第一写信号量;
87.所述第一通信模块还用于:
88.将所述第一写信号量设置为第一状态标识,并将所述第一处理命令写入至所述第一共享内存区域;其中,所述第一状态标识用于指示所述第一共享内存区域处于数据写入状态;
89.在所述第一处理命令写入完成的情况下,将所述第一写信号量设置为第二状态标识,并将所述第一读信号量设置为第三状态标识,以使所述第二进程响应于所述第一读信号量设置为第三状态标识,从所述第一共享内存区域中读取所述第一处理命令,并根据所述第一处理命令进行相应的处理操作,生成第一处理结果,以及将所述第一处理结果写入至所述第二共享内存区域;其中,所述第二状态标识指示所述第一共享内存区域处于数据未写入状态,所述第三状态标识指示所述第一共享内存处于数据读取状态。
90.可选的,所述第一通信模块还用于:
91.将所述第一处理命令写入至所述第一共享内存区域,并对所述第一共享内存区域进行加锁;
92.在所述第一处理命令写入完成的情况下,对所述第一共享内存区域进行解锁,以使所述第二进程响应于所述第一共享内存区域解锁,从所述第一共享内存区域中读取所述第一处理命令,并根据所述第一处理命令进行相应的处理操作,生成第一处理结果,以及将所述第一处理结果写入至所述第二共享内存区域。
93.可选的,所述第一处理命令是第一预设数据格式的;所述第一处理结果是基于第二预设数据格式生成的;所述第一进程对应的开发语言和所述第二进程对应的开发语言不同。
94.可选的,所述第一进程包括播放进程,所述第二进程包括解码进程;所述待处理业务请求包括视频播放请求;所述第一处理命令包括视频加载命令;所述第一处理结果包括
第一指示信息;
95.所述请求处理模块还用于:
96.根据所述视频播放请求确定视频加载命令标识和待播放视频的存储位置;
97.基于第一预设数据格式,对所述视频加载命令标识和待播放视频的存储位置进行封装,得到所述视频加载命令;
98.可选的,所述第一通信模块还用于:
99.将所述视频加载命令写入至所述第一共享内存区域,以使所述第二进程响应于所述视频加载命令中的视频加载命令标识,基于所述视频加载命令中的待播放视频的存储位置获取所述待播放视频,并对所述待播放视频进行解析,得到所述待播放视频的视频信息,以及创建第三共享内存区域,并基于第二预设数据格式,对所述第三共享内存区域的信息和所述视频信息进行封装,将封装得到的第一指示信息写入至所述第二共享内存区域;其中,所述第三共享内存区域用于存储解码后的待播放视频。
100.可选的,所述第三共享内存区域的信息包括第三共享内存区域的名称;
101.所述第一通信模块还用于:
102.在从所述第二共享内存区域内读取到所述第一指示信息的情况下,生成视频播放命令;
103.将所述视频播放命令写入至所述第一共享内存区域;其中,所述视频播放命令用于指示所述第二进程对所述待播放视频进行解码,并将解码后的待播放视频写入至所述第三共享内存区域;
104.基于所述第三共享内存区域的名称,从所述第三共享内存区域中读取解码后的待播放视频,并播放所述解码后的待播放视频。
105.可选的,所述待播放视频的数目为一个或多个;
106.所述请求处理模块还用于:
107.在所述视频播放请求指示多个待播放视频的情况下,创建多个共享内存区域,并确定多个启动参数;其中,所述启动参数与所述共享内存区域一一对象;每个启动参数用于启动一个第二进程。
108.可选的,所述共享内存区域的信息包括所述共享内存区域的名称和/或大小;
109.所述请求处理模块还用于:
110.在所述第二进程处于未运行状态的情况下,创建共享内存区域,并确定启动参数;
111.所述请求处理模块还用于:
112.在所述第二进程处于运行状态的情况下,根据所述待处理业务请求生成第一处理命令。
113.可选的,第一通信模块还用于:
114.在所述共享内存区域中写入第一心跳数据;其中,所述第一心跳数据用于指示所述第二进程根据所述第一心跳数据生成第一响应结果,并将所述第一响应结果写入至所述共享内存区域;
115.在第一预设时间内未从所述共享内存区域中读取到所述第一响应结果的情况下,停止所述第二进程,并启动新的第二进程。
116.根据本技术实施例的第四方面,提供一种业务处理装置,应用于电子设备,所述电
子设备用于执行第二进程,所述装置包括:
117.进程启动模块,用于获取第一进程传递的启动参数,并根据所述启动参数进行启动;其中,所述启动参数包括共享内存区域的信息;
118.第二通信模块,用于基于所述共享内存区域的信息,从所述共享内存区域中读取第一处理命令;其中,所述第一处理命令是第一进程响应于接收到的待处理业务请求生成的;
119.业务处理模块,用于根据所述第一处理命令进行处理操作。
120.可选的,所述共享内存区域包括第一共享内存区域和第二共享内存区域;
121.所述第二通信模块具体用于:
122.从所述第一共享内存区域中读取所述第一处理命令;
123.所述第二通信模块还用于:
124.将第一处理结果写入至所述第二共享内存区域,以使所述第一进程从所述第二共享区域内读取所述第一处理结果,以及根据所述第一处理结果进行相应的处理操作;其中,所述第一处理结果是根据所述第一处理命令进行相应的处理操作得到的。
125.可选的,所述第二共享内存区域对应于第二读信号量和第二写信号量;
126.所述第二通信模块还用于:
127.将所述第二写信号量设置为第四状态标识,并将所述第一处理结果写入至所述第二共享内存区域;其中,所述第四状态标识用于指示所述第二共享内存区域处于数据写入状态;
128.在所述第一处理结果写入完成的情况下,将所述第二写信号量设置为第五状态标识,并将所述第二读信号量设置为第六状态标识,以使所述第一进程响应于所述第二读信号量设置为第六状态标识,从所述第二共享内存区域中读取所述第一处理结果;其中,所述第五状态标识指示所述第二共享内存区域处于数据未写入状态,所述第六状态标识指示所述第二享内存区域处于数据读取状态。
129.可选的,所述第二通信模块还用于:
130.将所述第一处理结果写入至所述第二共享内存区域,并对所述第二共享内存区域进行加锁;
131.在所述第一处理结果写入完成的情况下,对所述第二共享内存区域进行解锁,以使所述第一进程从所述第二共享内存区域中读取所述第一处理结果。
132.可选的,所述第二进程包括解码进程,所述第一进程包括播放进程;所述第一处理命令包括视频加载命令;所述第一处理结果包括第一指示信息;
133.所述第二通信模块还用于:
134.根据所述视频加载命令中的待播放视频的存储位置获取待播放视频,并对所述待播放视频进行解析,得到所述待播放视频的视频信息;
135.创建第三共享内存区域;其中,所述第三共享内存区域用于存储解码后的待播放视频;
136.基于第二预设数据格式,对所述第三共享内存区域的信息和所述视频信息进行封装,得到第一指示信息;
137.所述第二通信模块还用于:
138.将所述第一指示信息写入至所述第二共享内存区域,以使所述第一进程根据所述第一指示信息生成视频播放命令,并将所述视频播放命令写入至所述第一共享内存区域。
139.可选的,所述第三共享内存区域的信息包括第三共享内存区域的名称;
140.所述第二通信模块还用于:
141.在从所述第一共享内存区域内读取到视频播放命令的情况下,对所述待播放视频进行解码;
142.将解码后的待播放视频写入至所述第三共享内存区域,以使所述第一进程基于所述第三共享内存区域的名称,从所述第三共享内存区域中读取解码后的待播放视频,并播放所述解码后的待播放视频。
143.可选的,所述第二通信模块还用于:
144.在所述共享内存区域中写入第二心跳数据;其中,所述第二心跳数据用于指示所述第一进程根据所述第二心跳数据生成第二响应结果,并将所述第二响应结果写入至所述共享内存区域;
145.在第二预设时间内未从所述共享内存区域中读取到所述第二响应结果的情况下,执行停止运行操作。
146.根据本技术实施例的第五方面,提供一种电子设备,包括:
147.处理器;
148.用于存储处理器可执行指令的存储器;
149.其中,所述处理器被配置为:
150.响应于接收到的待处理业务请求,创建共享内存区域,并确定启动参数;其中,所述启动参数包括共享内存区域的信息;
151.将所述启动参数传递至第二进程,以使所述第二进程根据所述启动参数进行启动;其中,第二进程指示实现所述待处理业务请求所使用的功能模块;
152.根据所述待处理业务请求生成第一处理命令;
153.将所述第一处理命令写入至共享内存区域,以使所述第二进程基于所述共享内存的信息,从所述共享内存区域中读取所述第一处理命令,并根据所述第一处理命令进行处理操作。
154.根据本技术实施例的第六方面,提供一种电子设备,包括:
155.处理器;
156.用于存储处理器可执行指令的存储器;
157.其中,所述处理器被配置为:
158.获取第一进程传递的启动参数,并根据所述启动参数进行启动;其中,所述启动参数包括共享内存区域的信息;
159.基于所述共享内存区域的信息,从所述共享内存区域中读取第一处理命令;其中,所述第一处理命令是第一进程响应于接收到的待处理业务请求生成的;
160.根据所述第一处理命令进行处理操作。
161.根据本技术实施例的第七方面,提供一种计算机可读存储介质,所述计算机可读存储介质中存储有计算机执行指令,当处理器执行所述计算机执行指令时,实现如上第一方面以及第一方面各种可能的设计所述的业务处理方法。
162.根据本技术实施例的第八方面,提供一种计算机可读存储介质,所述计算机可读存储介质中存储有计算机执行指令,当处理器执行所述计算机执行指令时,实现如上第二方面以及第二方面各种可能的设计所述的业务处理方法。
163.根据本技术实施例的第九方面,提供一种计算机程序产品,包括计算机程序,所述计算机程序被处理器执行时,实现如上第一方面以及第一方面各种可能的设计所述的业务处理方法。
164.根据本技术实施例的第十方面,提供一种计算机程序产品,包括计算机程序,所述计算机程序被处理器执行时,实现如上第二方面以及第二方面各种可能的设计所述的业务处理方法。
165.本技术的实施例提供的技术方案可以包括以下有益效果:
166.本技术实施例中,第一进程响应于接收到的待处理业务请求,创建共享内存区域,并确定根据该共享区域的信息确定启动参数,以供利用该启动参数启动第二进程,即第一进程确定实现相关业务功能所需利用的功能模块,即确定该功能模块对应的第二进程,并利用启动参数启动第二进程。第一进程根据该待处理业务请求生成第一处理命令,并将第一处理命令写入至共享内存区域,以使第二进程利用共享内存区域的信息,从该共享内存区域中读取第一处理命令,并利用该第一处理命令进行相应的处理操作,实现相应的业务功能。由于本技术是将稳定性不可靠的功能模块设计为单独的进程运行,使得该功能模块对应的第二进程与第一进程隔离运行。当接收到相关待处理业务请求时,表明需要利用相应的功能模块,则通过共享内存与该功能模块对应的第二进程进行通信,以利用第二进程进行相应的业务处理,即使第二进程在由于不稳定导致运行崩溃时,也不对第一进程的运行造成影响,保证第一进程稳定运行,即保证第一进程对应的程序稳定运行,从而在实现业务功能的基础上,保证程序运行的稳定性,同时,本技术是在需调用第二进程时,才创建共享内存区域,避免共享内存区域的无效创建,从而避免资源的浪费,且将共享内存区域的信息通过启动参数传递至第二进程,使得第二进程可以利用共享内存区域的信息与第一进程进行通信,保证第二进程和第一进程的成功通信。
167.应当理解的是,以上的一般描述和后文的细节描述仅是示例性和解释性的,并不能限制本技术。
附图说明
168.此处的附图被并入说明书中并构成本技术的一部分,示出了符合本技术的实施例,并与说明书一起用于解释本技术的原理。
169.图1是本技术根据一示例性实施例示出的一种业务处理方法的场景应用图。
170.图2是本技术根据一示例性实施例示出的一种业务处理方法的流程图。
171.图3是本技术根据一示例性实施例示出的又一种业务处理方法的流程图。
172.图4是本技术根据一示例性实施例示出的共享内存区域的示意图。
173.图5是本技术根据一示例性实施例示出的另一种业务处理方法的流程图。
174.图6是本技术根据一示例性实施例示出的再一种业务处理方法的流程图。
175.图7是本技术实施例业务处理装置所在计算机设备的一种硬件结构图。
176.图8是本技术根据一示例性实施例示出的一种业务处理装置的框图。
177.图9是本技术根据一示例性实施例示出的又一种业务处理装置的框图。
具体实施方式
178.这里将详细地对示例性实施例进行说明,其示例表示在附图中。下面的描述涉及附图时,除非另有表示,不同附图中的相同数字表示相同或相似的要素。以下示例性实施例中所描述的实施方式并不代表与本技术相一致的所有实施方式。相反,它们仅是与如所附权利要求书中所详述的、本技术的一些方面相一致的装置和方法的例子。
179.在本技术使用的术语是仅仅出于描述特定实施例的目的,而非旨在限制本技术。在本说明书和所附权利要求书中所使用的单数形式的“一种”、“所述”和“该”也旨在包括多数形式,除非上下文清楚地表示其他含义。还应当理解,本文中使用的术语“和/或”是指并包含一个或多个相关联的列出项目的任何或所有可能组合。
180.应当理解,尽管在本技术可能采用术语第一、第二、第三等来描述各种信息,但这些信息不应限于这些术语。这些术语仅用来将同一类型的信息彼此区分开。例如,在不脱离本技术范围的情况下,第一信息也可以被称为第二信息,类似地,第二信息也可以被称为第一信息。取决于语境,如在此所使用的词语“如果”可以被解释成为“在
……
时”或“当
……
时”或“响应于确定”。
181.接下来对本技术实施例进行详细说明。
182.如图1所示,图1是本技术根据一示例性实施例示出的一种业务处理方法的场景应用图,第一进程和第二进程是电子设备上的进程,第一进程在需要与第二进程通信时,通过共享内存区域进行通信,即第一进程向共享内存区域写入数据,第二进程从该共享内存区域中读取数据,和/或,第二进程向该共享内存区域写入数据,第一进程从该共享内存区域中读取数据。
183.可以理解,第一进程和第二进程所执行的操作实际是通过电子设备上的处理器执行的。共享内存区域也位于电子设备。
184.如图2所示,图2是本技术根据一示例性实施例示出的一种业务处理方法的流程图,该方法应用于电子设备,所述电子设备用于执行第一进程,该方法包括以下步骤:
185.步骤201、响应于接收到的待处理业务请求,创建共享内存区域,并确定启动参数。其中,启动参数包括共享内存区域的信息。
186.在本实施例中,在获取到待处理业务请求时,表明需调用其它进程(即第二进程)进行相关业务处理,则创建共享内存区域,并确定该共享内存区域的信息。根据该共享内存区域的信息生成启动参数,该启动参数用于启动第二进程,以使第一进程可以成功调用第二进程,该共享内存区域用于实现第一进程和第二进程之间的通信。
187.可选的,共享内存区域的信息包括共享内存区域的名称和/或大小。具体的,共享内存区域的命名可以使用匿名方式,无需每启动一对进程通信,第一进程便需与相应的第二进程约定名称。
188.可选的,第一进程还可以按照双方约定好的命名规则对创建的共享内存区域进行命名,即按照预设命名规则,确定共享内存区域的名称,无需第一进程将共享内存区域的名称传递至第二进程。
189.步骤202、将启动参数传递至第二进程,以使第二进程根据启动参数进行启动。其
中,第二进程指示实现待处理业务请求所使用的功能模块。
190.在本实施例中,在确定启动参数后,获取需调用的第二进程的运行路径,利用该运行路径,将该启动参数传递至需调用的第二进程,以使该第二进程根据该启动参数进行启动,从而通过启动参数将共享内存区域的信息传递至第二进程,以使第二进程可以基于共享内存区域的信息,查找到共享内存区域,该第二进程指示实现待处理业务请求对应的业务功能所需利用的功能模块。
191.可以理解,在将启动参数传递至第二进程时,实际是将启动参数传递至第二进程对应的函数或方法,以控制第二进程进行启动。
192.可选的,第一进程指示程序,第一进程相当于主进程,该第一进程是在启动程序时,所产生的进程。
193.可选的,功能模块是用于实现待处理业务请求对应的业务功能中的部分或全部功能的代码的封装集合,该功能模块的稳定性不可靠。
194.可选的,第二进程指示第三方组件,该第三方组件为第三方公司提供的组件,也即第二进程对应的功能模块为第三方组件。第二进程相当于子进程,其是由第一进程启动的。
195.在本实施例中,为了可以调用第二进程,需要先启动第二进程。在启动第二进程时,确定启动参数。其中,启动参数包括共享内存区域的信息,共享内存区域的信息包括共享内存区域的名称和/或大小。将启动参数传递至第二进程,以使第二进程根据启动参数进行启动,从而使得第二进程通过启动参数获知共享内存区域的情况,进而利用第二进程可以通过该共享内存区域与第一进程通信。
196.步骤203、根据待处理业务请求,生成第一处理命令。
197.步骤204、将第一处理命令写入至共享内存区域,以使第二进程从共享内存区域中读取第一处理命令,并根据第一处理命令进行处理操作。
198.在本实施例中,在获取到待处理业务请求时,表明需进行相关业务功能,则生成与待处理业务请求对应的第一处理命令。将该第一处理命令写入至共享内存区域,以使稳定性不可靠性的第二进程可以通过该共享内存区域与第一进程进行通信,即第二进程从共享内存区域中读取第一处理命令,并利用该第一处理命令进行相应的业务处理,从而实现相关业务功能。
199.可选的,待处理业务请求可以为不同类型的业务请求,例如,温度报警请求,视频播放请求等。待处理业务请求可以是用户根据实际需求进行输入的,也可以是自动生成的,在此,不对其进行限制。
200.以一个具体应用场景为例,待处理业务请求为温度报警请求,温度报警请求指示在目标生产设备的工作温度大于预设温度阈值时,进行报警。因此,需要获取目标生产设备的工作温度,此时需要利用温度检测功能模块获取目标生产设备的相关温度传感器所检测到的温度,则生成温度检测命令(即第一处理命令),以将温度检测命令发送至温度检测功能模块对应的第二进程,以使该第二进程与目标生产设备的相关温度传感器进行通信,从而获取目标生产设备的工作温度。
201.可选的,在确定所需利用的功能模块后,在该功能模块对应的第二进程处于未运行状态情况下,表明第二进程未启动,则创建共享内存区域,并确定启动参数,以供利用启动参数启动该第二进程,使得该第二进程运行。在第二进程处于运行状态的情况下,表明第
二进程已经启动,则根据待处理业务请求生成第一处理命令,以直接利用第二进程进行业务处理。
202.在本实施例中,在接收到待处理业务请求时,即在需调用其它进程(即第二进程)以实现相应的业务功能时,也即在需产生调用关系时,才创建共享内存区域,以供利用该共享内存区域与第二进程进行通信,相较于预先创建共享内存区域,在接收到待处理业务请求时,直接利用该共享内存区域与第二进程通信,本技术可以避免共享内存区域的无效创建,且可以避免无效的共享内存区域导致的资源的占用,从而避免资源的浪费。
203.在本实施例中,基于匿名方式,为该共享内存区域分配名称,相较于按照命名规则对共享内存区域进行命名,命名方式更加灵活,无需第二进程预先存储该共享内存区域的名称,且在一定程度上避免重复命名,适用范围更广。
204.在本实施例中,本技术是是在程序启动后,第一进程根据待处理业务请求确定所需实现的业务功能,即确定实现该业务功能所需利用的功能模块,则在该功能模块未运行的情况下,启动该功能模块,也即启动该功能模块对应的第二进程,以供利用该第二进程进行相应的业务处理,从而实现相应的业务功能,相较于将功能模块直接集成在程序中,将功能模块作为程序的组成部分,通过启动程序时所产生的进程(相当于第一进程)实现业务功能,本技术将稳定性不可靠的功能模块与程序隔离,使得程序不受功能模块的影响,即第一进程不受第二进程的影响,即使第二进程运行异常,第一进程也可以正常运行,从而保证第一进程运行的稳定性,也即提高了程序的稳定性。
205.从上述描述可知,第一进程响应于接收到的待处理业务请求,创建共享内存区域,并确定根据该共享区域的信息确定启动参数,以供利用该启动参数启动第二进程,即第一进程确定实现相关业务功能所需利用的功能模块,即确定该功能模块对应的第二进程,并利用启动参数启动第二进程。第一进程根据该待处理业务请求生成第一处理命令,并将第一处理命令写入至共享内存区域,以使第二进程利用共享内存区域的信息,从该共享内存区域中读取第一处理命令,并利用该第一处理命令进行相应的处理操作,实现相应的业务功能。由于本技术是将稳定性不可靠的功能模块设计为单独的进程运行,使得该功能模块对应的第二进程与第一进程隔离运行。当接收到相关待处理业务请求时,表明需要利用相应的功能模块,则通过共享内存与该功能模块对应的第二进程进行通信,以利用第二进程进行相应的业务处理,即使第二进程在由于不稳定导致运行崩溃时,也不对第一进程的运行造成影响,保证第一进程稳定运行,即保证第一进程对应的程序稳定运行,从而在实现业务功能的基础上,保证程序运行的稳定性,同时,本技术是在需调用第二进程时,才创建共享内存区域,避免共享内存区域的无效创建,从而避免资源的浪费,且将共享内存区域的信息通过启动参数传递至第二进程,使得第二进程可以利用共享内存区域的信息与第一进程进行通信,保证第二进程和第一进程的成功通信。
206.如图3所示,图3是本技术根据一示例性实施例示出的又一种业务处理方法的流程图,在前述实施例的基础上,还可以通过异常检测机制检测第二进程是否正常运行,下面将结合一个具体实施例对此过程进行详细说明,如图3所示,该方法包括以下步骤:包括如下步骤:
207.步骤301、创建共享内存区域,并确定启动参数。其中,启动参数包括共享内存区域的信息。
208.步骤302、将启动参数传递至第二进程,以使第二进程根据启动参数进行启动。其中,第二进程指示实现待处理业务请求所使用的功能模块。
209.步骤303、根据待处理业务请求,生成第一处理命令。
210.在本实施例中,第一进程启动后,创建共享内存区域,并为该共享内存区域分配相应的名称,以供可以基于共享内存区域的名称利用该共享内存区域(例如,向共享内存区域写入数据)。
211.可选的,为了避免读写冲突,在创建共享内存区域时,分别创建第一共享内存区域和第二共享内存区域,即内存区域包括第一共享内存区域和第二共享内存区域。
212.其中,如图4所示,第一共享内存区域用于存储第一进程写入的数据,即第一共享内存区域用于存储供第二进程读取的数据。第二共享内存区域用于存储供第一进程读取的数据,即第二共享内存区域用于存储第二进程写入的数据。
213.可选的,当共享内存区域包括第一共享内存区域和第二共享内存区域时,共享内存区域的信息包括第一共享内存区域的名称和/或大小,以及第二共享内存区域的名称和/或大小。
214.其中,共享内存区域的大小是根据进程通信所写入的数据的大小确定的,例如,第一进程写入的数据的长度为272个字节,第二进程写入的数据的长度为288个字节,则可以设置共享内存区域的大小不能小于288个字节。相应的。
215.可选的,当共享内存区域包括第一共享内存区域和第二共享内存区域时,在按照双方约定好的命名规则对创建的共享内存区域进行命名时,按照预设命名规则,确定第一共享内存区域的名称和第二共享内存区域的名称,使得第二进程可以直接获知第一进程创建的共享内存区域(即第一共享内存区域和第二共享内存区域)的名称,从而可以利用共享内存进行单向或双向通信。
216.其中,预设命名规则可以根据实际需求进行设置,例如,第一进程为播放进程,则第一共享内存区域的名称可以为video_shared_memory_w,第二共享内存区域的名称可以为video_shared_memory_r。具体的,第一进程向video_shared_memory_w对应的共享内存区域中写入数据,第二进程从video_shared_memory_w对应的共享内存区域读取数据。第二进程向video_shared_memory_r对应的共享内存区域中写入数据,第一进程从video_shared_memory_r对应的共享内存区域读取数据。
217.步骤304、将第一处理命令写入至共享内存区域,以使第二进程从共享内存区域中读取第一处理命令,并根据第一处理命令进行处理操作。
218.在本实施例中,当共享内存区域包括第一共享内存区域和第二共享内存区域时,第一进程将第一处理命令写入至第一共享内存区域,以使第二进程从第一共享内存区域中读取第一处理命令,并根据第一处理命令进行相应的处理操作,得到第一处理结果,以及将第一处理结果写入至第二共享内存区域。第一进程从第二共享内存区域中读取第一处理结果,并根据第一处理结果进行相应的处理操作,从而避免当第一进程和第二进程同时向共享内存区域写入数据时,导致数据写入冲突。
219.可选的,为了保证通信的可靠性,避免读写冲突,且使得进程(即第一进程和第二进程)可以及时获知是否可以进行数据读取/写入,可以通过互斥信号量或者互斥锁确保第一共享内存区域仅有一个进程在进行数据读取或数据写入。
220.其中,在通过互斥信号量避免第一共享内存区域读写冲突时,第一共享内存区域对应于第一读信号量和第一写信号量。相应的,将第一写信号量设置为第一状态标识,并将第一处理命令写入至第一共享内存区域。其中,第一状态标识用于指示第一共享内存区域处于数据写入状态。在第一处理命令写入完成的情况下,将第一写信号量设置为第二状态标识,并将第一读信号量设置为第三状态标识,以使第二进程响应于第一读信号量设置为第三状态标识,从第一共享内存区域中读取第一处理命令,并根据第一处理命令进行相应的处理操作,生成第一处理结果,以及将第一处理结果写入至第二共享内存区域。其中,第二状态标识指示第一共享内存区域处于数据未写入状态,第三状态标识指示第一共享内存处于数据读取状态。
221.具体的,第一进程在向第一共享内存区域写入数据(即第一处理命令)时,将第一写信号量变为第一状态标识,以表明第一共享内存区域处于数据写入状态,其他进程不能读取数据。第一进程在数据写入完成后,即在将第一处理命令写入第一共享内存区域后,将第一读信号量设置为第三状态标识,以表明其它进程可以从第一共享内存区域中读取数据,则第二进程响应于第一读信号量变为第三状态标识,及时获知第一共享内存可以进行数据读取,以及时从第一共享内存区域中读取第一处理命令,并利用该第一处理命令进行相关业务处理,生成第一处理结果。第二进程在得到第一处理结果后,将该第一处理结果写入至第二共享内存区域。
222.其中,在第一进程向第一共享内存区域写入数据的过程中,第一共享内存区域对应的第一读信号量为第七状态标识,该第七状态标识指示第一共享内存区域处于数据未读取状态,即表示其它进程不能从第一共享内存区域中读取数据。
223.在第二进程从第一共享内存区域中读取第一处理命令的过程中,第一共享内存区域对应的第一写信号量变为第二状态标识,以表明第一进程不能向第一共享内存中写入数据。
224.其中,在通过互斥锁避免读写冲突时,将第一处理命令写入至第一共享内存区域,并对第一共享内存区域进行加锁。在第一处理命令写入完成的情况下,对第一共享内存区域进行解锁,以使第二进程响应于第一共享内存区域解锁,从第一共享内存区域中读取第一处理命令,并根据第一处理命令进行相应的处理操作,生成第一处理结果,以及将第一处理结果写入至第二共享内存区域。
225.具体的,第一进程在向第一共享内存区域写入数据时,对第一共享内存区域进行加锁,以避免其它进程从第一共享内存中读取数据。第一进程在向第一共享内存区域写入数据完成后,表明第二进程可以及时获知第一共享内存可以进行数据读取,以及时从第一共享内存区域中读取数据,则第一进程对第一共享内存区域进行解锁,以使第二进程可以访问该第一共享内存区域,从而可以从第一共享内存区域中读取第一处理命令。
226.可选的,第二进程在访问第一共享内存区域时,也可以对第一共享内存区域进行加锁,在访问完成后,即在数据读取完成后,对该第一共享内存区域进行解锁,以使第一共享内存可以及时获知可以对第一共享内存区域进行数据写入。
227.可选的,第一进程可以不同类型的程序对应的进程,例如,程序为视频播放软件,则第一进程包括播放进程,第二进程包括解码进程,待处理业务请求包括视频播放请求,相应的,第一处理命令包括视频加载命令。第一处理结果包括第一指示信息。
228.可选的,当用户启动电子设备上的视频播放软件时,电子设备启动播放进程。在接收到视频播放请求后,根据视频播放请求确定视频加载命令标识和待播放视频的存储位置。基于第一预设数据格式,对视频加载命令标识和待播放视频的存储位置进行封装,得到视频加载命令。将视频加载命令写入至第一共享内存区域,以使第二进程响应于视频加载命令中的视频加载命令标识,基于视频加载命令中的待播放视频的存储位置获取待播放视频,并对待播放视频进行解析,得到待播放视频的视频信息,以及创建第三共享内存区域,并基于第二预设数据格式,对第三共享内存区域的信息和视频信息进行封装,将封装得到的第一指示信息写入至第二共享内存区域。其中,第三共享内存区域用于存储解码后的待播放视频。
229.具体的,当用户触发视频播放软件中的相关控件(例如,选中某个视频)时,确定待播放视频的标识,并生成包括该待播放视频的标识的视频播放请求。第一进程在获取到视频播放请求后,表明需利用第二进程需加载待播放视频,以进行时解码,则基于该视频播放请求中的待播放视频的标识查找该待播放视频的存储位置,并确定该视频播放请求对应的视频加载命令标识。基于第一预设数据格式,对视频加载命令标识和待播放视频的存储位置进行封装,得到视频加载命令,并将视频加载命令写入至第一共享内存区域。
230.第二进程在从第一共享内存区域中读取到该视频加载命令后,执行该视频加载命令,即响应于该视频加载命令中的视频加载命令标识,从待播放视频的存储位置中获取该待播放视频,并对该待播放视频进行解析,得到待播放视频的视频信息,以实现待播放视频的加载,即初始化完成。由于视频数据量较大,为了避免第二共享内存区域的大小不足,第二进程创建第三共享内存区域,该第三共享内存区域用于存储解码后的视频数据。为了使第一进程可以从第三共享内存区域中获取数据,第二进程在视频加载成功后,基于第二预设数据格式,对第三共享内存区域的信息与待播放视频的视频信息进行封装,得到第一指示信息,并将该第一指示信息写入至第二共享内存区域。
231.其中,视频信息包括待播放视频的宽、高、播放时长等信息。第三共享内存区域的信息包括第三共享内存区域的名称和/或大小。
232.可选的,在从第二共享内存区域内读取到第一指示信息的情况下,生成视频播放命令。将视频播放命令写入至第一共享内存区域。其中,视频播放命令用于指示第二进程对待播放视频进行解码,并将解码后的待播放视频写入至第三共享内存区域。基于第三共享内存区域的名称,从第三共享内存区域中读取解码后的待播放视频,并播放解码后的待播放视频。
233.具体的,第一进程在从第二共享内存区域中读取到该第一指示信息后,确定第二进程已经成功加载视频,可以利用第二进程进行视频解码,则第一进程利用第一指示信息中的待播放视频的视频信息初始化播放器控件,并获取视频播放命令标识。基于第一预设数据格式,对视频播放命令标识进行封装生成视频播放命令。将视频播放命令写入至第一共享内存区域,第二进程在从第一共享内存区域读取到该视频播放命令后,响应于该视频播放命令中的视频播放命令标识,对待播放视频进行解码,得到解码后的待播放视频,并将该解码后的待播放视频写入至第三共享内存区域。第一进程利用第三共享内存区域的名称,查找到第三共享内存区域。从第三共享内存区域中读取解码后的待播放视频,并刷新播放器控件,以利用播放器控件播放解码后的待播放视频。
234.可选的,第二进程在对待播放视频进行解码时,可以基于视频帧的形式进行解码,即对待播放视频中的视频帧进行解码,从而实现边解码边播放。
235.可选的,视频播放命令可以是在读取到第二进程返回的第一指示信息自动生成的,也可以是用户触发生成的(例如,用户点击播放控件)。
236.其中,电子设备可以存储有请求与命令之间的对应关系,例如,在获取到视频播放请求后,表明需生成视频加载命令,则查找视频加载命令标识。
237.可选的,待播放视频的标识可以是待播放视频的名称或者编号,其可以包括字母、数字、字等字符。命令标识(例如,视频加载命令标识、视频播放命令标识)也可以包括字母、数字、字等字符。例如,视频加载命令标识为0,视频播放命令标识为1。
238.可选的,第一进程,即播放进程还可以根据需求获取其它命令标识,以基于第一预设数据格式生成其它命令,从而实现播放控制,例如,暂停播放命令、播放进度拖动命令、声音设置命令、停止播放命令。相应的,第二进程也生成其它类型的处理结果。
239.可选的,第二进程生成的第一处理结果也可以包括相应的结果标识,例如,当第二进程生成第一指示信息时,获取视频加载成功标识,即初始化完成标识,则基于第二预设数据格式生成的第一指示信息也包括该初始化完成标识。
240.其中,第一预设数据格式和第二预设数据格式可以根据实际需求进行设置,例如,第一预设数据格式和第二预设数据格式可以是结构体、json、xml等数据格式。
241.具体的,第一预设数据格式为,struct playmsg{
242.int command;//命令标识,0-视频加载命令标识,1-视频播放命令标识,2-暂停播放命令标识,3-播放进度拖动命令标识,4-声音设置命令标识,5-停止播放命令标识,6-心跳标识
243.string src;//存储位置,当command为0加载时有效
244.int vol;//取值范围0-100,当command为4设置声音时有效
245.long time;//要拖动到的播放时间点,单位毫秒,当command为3拖动播放进度时有效
246.}。
247.具体的,第二预设数据格式为,struct decodemsg{
248.int command;//结果标识,0-初始化完成标识,1-加载结果标识,2-解码完成标识,3-心跳标识
249.int width;//视频的像素宽度
250.int height;//视频的像素高度
251.long duration;//视频总时长
252.long time;//视频当前播放位置
253.string data_sm;//第三共享内存区域的名称,当command为1时有效
254.int data_size;//第三共享内存区域的大小,当command为1时有效
255.}。
256.在本实施例中,由于第二进程解码得到的视频数据量较大,在将解码后的视频数据写入到第二共享内存区域时,所需的时间较长,当第二进程需与第一进程进行通信时,由于第二共享内存区域被占用,因此,在将解码后的视频数据写入的过程中,第二进程无法利
用该第二共享内存区域与第一进程进行通信,因此,为了提高通信的效率,创建第三共享内存区域,使得第二进程可以在将解码后的视频数据写入到第三共享内存区域的过程中,仍可以通过第二共享内存区域与第一进程进行通信。
257.可选的,待播放视频的数目为一个或多个。相应的,创建共享内存区域,并确定启动参数,包括:
258.在视频播放请求指示多个待播放视频的情况下,创建多个共享内存区域,并确定多个启动参数。其中,启动参数与共享内存区域一一对象。每个启动参数用于启动一个第二进程。
259.具体的,在需播放多个视频(即待播放视频)的情况下,可以启动多个第二进程,每个第二进程用于对一个待播放视频进行解码,即对于每个第二进程,创建该第二进程对应的共享内存区域,并根据该第二进程对应的共享内存区域的信息确定该第二进程对应的启动参数,以供利用该第二进程对应的启动参数启动该第二进程,从而利用该第二进程对一个待播放视频进行解码,实现多个视频的并行解码,从而使得第一进程可以同时播放多个视频,满足用户的播放需求。
260.在本实施例中,第一处理命令是第一预设数据格式的,即第一进程生成需发送至第二进程的命令是基于第一预设数据格式的。第一处理结果是基于第二预设数据格式生成的,即第二进程生成的需发送至第一进程的处理结果是基于第二预设数据格式生成的。第一预设数据格式和第二预设数据格式是第一进程和第二进程双方定义好的,因此,第一进程和第二进程可以解析对方发送的数据,成功实现进程间的通信。因此,第一进程对应的开发语言和第二进程对应的开发语言可以不同,实现跨语言平台通信。
261.步骤304、在共享内存区域中写入第一心跳数据。其中,第一心跳数据用于指示第二进程根据第一心跳数据生成第一响应结果,并将第一响应结果写入至共享内存区域。
262.在本实施例中,第一进程每隔第三预设时间(例如,1分钟),按照第一预设数据格式,生成第一心跳数据,并将第一心跳数据写入至共享内存区域。当第二进程正常运行时,第二进程从共享内存区域中读取该第一心跳数据,并生成相应的第一响应结果。在生成第一响应结果后,将该第一响应结果写入至共享内存区域中,以实现心跳数据的反馈。
263.步骤305、在第一预设时间内未从共享内存区域中读取到第一响应结果的情况下,停止第二进程,并启动新的第二进程。
264.在本实施例中,第一进程在将第一心跳数据写入共享内存区域后,若在第一预设时间内未从共享内存区域中读取到第二进程返回的第一响应结果,表明第二进程运行异常,为了保证业务的正常进行,则停止运行该第二进程,并启动新的第二进程,以利用新的第二进程继续进行业务处理,例如,启动新的解码进程,以利用该解码进程进行视频解码。
265.如图5所示,图5是本技术根据一示例性实施例示出的另一种业务处理方法的流程图,该方法应用于电子设备,所述电子设备用于执行第二进程,如图5所示,该方法包括以下步骤:
266.步骤501、获取第一进程传递的启动参数,并根据启动参数进行启动;其中,启动参数包括共享内存区域的信息。
267.步骤502、基于共享内存区域的信息,从共享内存区域中读取第一处理命令。其中,第一处理命令是第一进程响应于接收到的待处理业务请求生成的。
268.步骤503、根据第一处理命令进行处理操作。
269.在本实施例中,第二进程在接收到第一进程发送的启动参数后,根据该启动参数进行启动运行。第二进程在运行的过程中,若确定第一进程向共享内存区域中写入数据,则从该共享内存区域中读取数据,即读取第一处理命令,并基于该第一处理命令进行相关业务处理,以实现相应的业务功能。
270.在本实施例中,将不稳定的、不信任的功能模块(例如,第三方组件)使用单独的进程(即第二进程)隔离运行,也即将该功能模块作为一个独立的程序,第一进程在需要调用相关功能模块以实现特定业务功能时,通过共享内存区域与该功能模块对应的第二进程进行通信,以灵活将不同程序结合在一起工作,实现多个进程协同高效工作,保证第一进程稳定运行,避免由于某个模块不稳定导致整个第一进程崩溃。
271.如图6所示,图6是本技术根据一示例性实施例示出的再一种业务处理方法的流程图,在前述实施例的基础上,还可以通过异常检测机制检测第二进程是否正常运行,下面将结合一个具体实施例对此过程进行详细说明,如图6所示,该方法包括以下步骤:包括如下步骤:
272.步骤601、获取第一进程传递的启动参数,并根据启动参数进行启动;其中,启动参数包括共享内存区域的信息。
273.步骤602、基于共享内存区域的信息,从共享内存区域中读取第一处理命令。其中,第一处理命令是第一进程响应于接收到的待处理业务请求生成的。
274.在本实施例中,共享内存区域包括第一共享内存区域和第二共享内存区域。为了保证通信的可靠性,避免读写冲突,可以通过互斥信号量或者互斥锁确保第二共享内存区域仅有一个进程在进行数据读取或数据写入。
275.可选的,在通过互斥信号量避免第二共享内存区域读写冲突时,第二共享内存区域对应于第二读信号量和第二写信号量。将第二写信号量设置为第四状态标识,并将第一处理结果写入至第二共享内存区域。其中,第四状态标识用于指示第二共享内存区域处于数据写入状态。在第一处理结果写入完成的情况下,将第二写信号量设置为第五状态标识,并将第二读信号量设置为第六状态标识,以使第一进程响应于第二读信号量设置为第六状态标识,从第二共享内存区域中读取第一处理结果。其中,第五状态标识指示第二共享内存区域处于数据未写入状态,第六状态标识指示第二享内存区域处于数据读取状态。
276.其中,通过互斥信号量避免第二共享内存区域读写冲突与通过互斥信号量避免第一共享内存区域读写冲突的过程类似,在此,不在对其进行赘述。
277.可选的,在通过互斥锁避免第二共享内存区域读写冲突时,将第一处理结果写入至第二共享内存区域,并对第二共享内存区域进行加锁。在第一处理结果写入完成的情况下,对第二共享内存区域进行解锁,以使第一进程从第二共享内存区域中读取第一处理结果。
278.其中,通过互斥锁避免第二共享内存区域读写冲突与通过互斥锁避免第一共享内存区域读写冲突的过程类似,在此,不在对其进行赘述。
279.可选的,第二进程包括解码进程,第一进程包括播放进程。第一处理命令包括视频加载命令。第一处理结果包括第一指示信息。
280.可选的,根据第一处理命令进行相应的处理操作,包括:
281.根据视频加载命令中的待播放视频的存储位置获取待播放视频,并对待播放视频进行解析,得到待播放视频的视频信息。
282.创建第三共享内存区域。其中,第三共享内存区域用于存储解码后的待播放视频。
283.基于第二预设数据格式,对第三共享内存区域的信息和视频信息进行封装,得到第一指示信息。
284.将第一指示信息写入至第二共享内存区域,以使第一进程根据第一指示信息生成视频播放命令,并将视频播放命令写入至第一共享内存区域。
285.步骤603、根据第一处理命令进行处理操作。
286.步骤604、在共享内存区域中写入第二心跳数据。其中,第二心跳数据用于指示第一进程根据第二心跳数据生成第二响应结果,并将第二响应结果写入至共享内存区域。
287.在本实施例中,第二进程每隔第四预设时间(例如,1分钟),按照第二预设数据格式,生成第二心跳数据,并将第二心跳数据写入至共享内存区域。当第二进程正常运行时,第一进程从共享内存区域中读取该第二心跳数据,并生成相应的第二响应结果。在生成第二响应结果后,将该第二响应结果写入至共享内存区域中,以实现心跳数据的反馈。
288.步骤605、在第二预设时间内未从共享内存区域中读取到第二响应结果的情况下,执行停止运行操作。
289.在本实施例中,第二进程在将第二心跳数据写入共享内存区域后,若在第二预设时间内未从共享内存区域中读取到第一进程返回的第二响应结果,表明第一进程运行异常,为了避免资源的占用,则第二进程执行停止运行操作,即第二进程主动关闭自身,以避免由于重新开启的第一进程启动新的第二进程进行业务处理,而不使用该第二进程,但该第二进程仍在运行中,从而造成该第二进程的无效运行,进而导致该第二进程占用资源。
290.与前述方法的实施例相对应,本技术还提供了装置及其所应用的电子设备的实施例。
291.本技术业务处理装置的实施例可以应用在电子设备上,例如服务器或终端设备(例如,计算机、移动终端等)。装置实施例可以通过软件实现,也可以通过硬件或者软硬件结合的方式实现。以软件实现为例,作为一个逻辑意义上的装置,是通过其所在文件处理的处理器将非易失性存储器中对应的计算机程序指令读取到内存中运行形成的。从硬件层面而言,如图7所示,为本技术实施例文件处理装置所在电子设备的一种硬件结构图,除了图7所示的处理器710、内存730、网络接口720、以及非易失性存储器740之外,实施例中业务处理装置731所在的电子设备,通常根据该电子设备的实际功能,还可以包括其他硬件,对此不再赘述。
292.如图8所示,图8是本技术根据一示例性实施例示出的一种业务处理装置的框图,应用于电子设备,所述电子设备用于执行第一进程,所述装置包括:
293.请求处理模块810,用于响应于接收到的待处理业务请求,创建共享内存区域,并确定启动参数。其中,启动参数包括共享内存区域的信息。
294.参数处理模块820,用于将启动参数传递至第二进程,以使第二进程根据启动参数进行启动。其中,第二进程指示实现待处理业务请求所使用的功能模块。
295.命令生成模块830,用于根据待处理业务请求生成第一处理命令。
296.第一通信模块840,用于将第一处理命令写入至共享内存区域,以使第二进程基于
共享内存的信息,从共享内存区域中读取第一处理命令,并根据第一处理命令进行处理操作。
297.可选的,第二进程指示第三方组件。共享内存区域包括第一共享内存区域和第二共享内存区域。第一共享内存区域用于存储第一进程写入的数据,第二共享内存区域用于存储供第一进程读取的数据。
298.第一通信模块840具体用于:
299.将第一处理命令写入至第一共享内存区域,以使第二进程从第一共享内存区域中读取第一处理命令,并根据第一处理命令进行相应的处理操作,得到第一处理结果,以及将第一处理结果写入至第二共享内存区域。
300.第一通信模块840还用于:
301.从第二共享内存区域中读取第一处理结果,并根据第一处理结果进行相应的处理操作。
302.可选的,第一共享内存区域对应于第一读信号量和第一写信号量。
303.第一通信模块840还用于:
304.将第一写信号量设置为第一状态标识,并将第一处理命令写入至第一共享内存区域。其中,第一状态标识用于指示第一共享内存区域处于数据写入状态。
305.在第一处理命令写入完成的情况下,将第一写信号量设置为第二状态标识,并将第一读信号量设置为第三状态标识,以使第二进程响应于第一读信号量设置为第三状态标识,从第一共享内存区域中读取第一处理命令,并根据第一处理命令进行相应的处理操作,生成第一处理结果,以及将第一处理结果写入至第二共享内存区域。其中,第二状态标识指示第一共享内存区域处于数据未写入状态,第三状态标识指示第一共享内存处于数据读取状态。
306.可选的,第一通信模块840还用于:
307.将第一处理命令写入至第一共享内存区域,并对第一共享内存区域进行加锁。
308.在第一处理命令写入完成的情况下,对第一共享内存区域进行解锁,以使第二进程响应于第一共享内存区域解锁,从第一共享内存区域中读取第一处理命令,并根据第一处理命令进行相应的处理操作,生成第一处理结果,以及将第一处理结果写入至第二共享内存区域。
309.可选的,第一处理命令是第一预设数据格式的。第一处理结果是基于第二预设数据格式生成的。第一进程对应的开发语言和第二进程对应的开发语言不同。
310.可选的,第一进程包括播放进程,第二进程包括解码进程。待处理业务请求包括视频播放请求。第一处理命令包括视频加载命令。第一处理结果包括第一指示信息。
311.请求处理模块810还用于:
312.根据视频播放请求确定视频加载命令标识和待播放视频的存储位置。
313.基于第一预设数据格式,对视频加载命令标识和待播放视频的存储位置进行封装,得到视频加载命令。
314.可选的,第一通信模块840还用于:
315.将视频加载命令写入至第一共享内存区域,以使第二进程响应于视频加载命令中的视频加载命令标识,基于视频加载命令中的待播放视频的存储位置获取待播放视频,并
对待播放视频进行解析,得到待播放视频的视频信息,以及创建第三共享内存区域,并基于第二预设数据格式,对第三共享内存区域的信息和视频信息进行封装,将封装得到的第一指示信息写入至第二共享内存区域。其中,第三共享内存区域用于存储解码后的待播放视频。
316.可选的,第三共享内存区域的信息包括第三共享内存区域的名称。
317.第一通信模块840还用于:
318.在从第二共享内存区域内读取到第一指示信息的情况下,生成视频播放命令。
319.将视频播放命令写入至第一共享内存区域。其中,视频播放命令用于指示第二进程对待播放视频进行解码,并将解码后的待播放视频写入至第三共享内存区域。
320.基于第三共享内存区域的名称,从第三共享内存区域中读取解码后的待播放视频,并播放解码后的待播放视频。
321.可选的待播放视频的数目为一个或多个;
322.请求处理模块810还用于:
323.在视频播放请求指示多个待播放视频的情况下,创建多个共享内存区域,并确定多个启动参数。其中,启动参数与共享内存区域一一对象。每个启动参数用于启动一个第二进程。
324.可选的,共享内存区域的信息包括共享内存区域的名称和/或大小。
325.请求处理模块810还用于:
326.在第二进程处于未运行状态的情况下,创建共享内存区域,并确定启动参数。
327.请求处理模块还用于:
328.在第二进程处于运行状态的情况下,根据待处理业务请求生成第一处理命令。
329.可选的,第一通信模块840还用于:
330.在共享内存区域中写入第一心跳数据。其中,第一心跳数据用于指示第二进程根据第一心跳数据生成第一响应结果,并将第一响应结果写入至共享内存区域。
331.在第一预设时间内未从共享内存区域中读取到第一响应结果的情况下,停止第二进程,并启动新的第二进程。
332.如图9所示,图9是本技术根据一示例性实施例示出的又一种业务处理装置的框图,应用于电子设备,所述电子设备用于执行第二进程,所述装置包括:
333.进程启动模块910,用于获取第一进程传递的启动参数,并根据启动参数进行启动。其中,启动参数包括共享内存区域的信息。
334.第二通信模块920,用于基于共享内存区域的信息,从共享内存区域中读取第一处理命令。其中,第一处理命令是第一进程响应于接收到的待处理业务请求生成的。
335.业务处理模块930,用于根据第一处理命令进行处理操作。
336.可选的,共享内存区域包括第一共享内存区域和第二共享内存区域。
337.第二通信模块920具体用于:
338.从第一共享内存区域中读取第一处理命令。
339.第二通信模块920还用于:
340.将第一处理结果写入至第二共享内存区域,以使第一进程从第二共享区域内读取第一处理结果,以及根据第一处理结果进行相应的处理操作。其中,第一处理结果是根据第
一处理命令进行相应的处理操作得到的。
341.可选的,第二共享内存区域对应于第二读信号量和第二写信号量。
342.第二通信模块920还用于:
343.将第二写信号量设置为第四状态标识,并将第一处理结果写入至第二共享内存区域。其中,第四状态标识用于指示第二共享内存区域处于数据写入状态。
344.在第一处理结果写入完成的情况下,将第二写信号量设置为第五状态标识,并将第二读信号量设置为第六状态标识,以使第一进程响应于第二读信号量设置为第六状态标识,从第二共享内存区域中读取第一处理结果。其中,第五状态标识指示第二共享内存区域处于数据未写入状态,第六状态标识指示第二享内存区域处于数据读取状态。
345.可选的,第二通信模块920还用于:
346.将第一处理结果写入至第二共享内存区域,并对第二共享内存区域进行加锁。
347.在第一处理结果写入完成的情况下,对第二共享内存区域进行解锁,以使第一进程从第二共享内存区域中读取第一处理结果。
348.可选的,第二进程包括解码进程,第一进程包括播放进程。第一处理命令包括视频加载命令。第一处理结果包括第一指示信息。
349.第二通信模块920还用于:
350.根据视频加载命令中的待播放视频的存储位置获取待播放视频,并对待播放视频进行解析,得到待播放视频的视频信息。
351.创建第三共享内存区域。其中,第三共享内存区域用于存储解码后的待播放视频。
352.基于第二预设数据格式,对第三共享内存区域的信息和视频信息进行封装,得到第一指示信息。
353.第二通信模块920还用于:
354.将第一指示信息写入至第二共享内存区域,以使第一进程根据第一指示信息生成视频播放命令,并将视频播放命令写入至第一共享内存区域。
355.可选的,第三共享内存区域的信息包括第三共享内存区域的名称。
356.第二通信模块920还用于:
357.在从第一共享内存区域内读取到视频播放命令的情况下,对待播放视频进行解码。
358.将解码后的待播放视频写入至第三共享内存区域,以使第一进程基于第三共享内存区域的名称,从第三共享内存区域中读取解码后的待播放视频,并播放解码后的待播放视频。
359.可选的,第二通信模块920还用于:
360.在共享内存区域中写入第二心跳数据。其中,第二心跳数据用于指示第一进程根据第二心跳数据生成第二响应结果,并将第二响应结果写入至共享内存区域。
361.在第二预设时间内未从共享内存区域中读取到第二响应结果的情况下,执行停止运行操作。
362.上述装置中各个模块的功能和作用的实现过程具体详见上述方法中对应步骤的实现过程,在此不再赘述。
363.相应的,本技术还提供一种电子设备,所述装置包括有处理器;用于存储处理器可
执行指令的存储器;其中,所述处理器被配置为:
364.响应于接收到的待处理业务请求,创建共享内存区域,并确定启动参数。其中,启动参数包括共享内存区域的信息。
365.将启动参数传递至第二进程,以使第二进程根据启动参数进行启动。其中,第二进程指示实现待处理业务请求所使用的功能模块。
366.根据待处理业务请求生成第一处理命令。
367.将第一处理命令写入至共享内存区域,以使第二进程基于共享内存的信息,从共享内存区域中读取第一处理命令,并根据第一处理命令进行处理操作。
368.或者,
369.获取第一进程传递的启动参数,并根据启动参数进行启动。其中,启动参数包括共享内存区域的信息。
370.基于共享内存区域的信息,从共享内存区域中读取第一处理命令。其中,第一处理命令是第一进程响应于接收到的待处理业务请求生成的。
371.根据第一处理命令进行处理操作。
372.在另一个实施例中,本技术还提供一种计算机可读存储介质,所述计算机可读存储介质中存储有计算机执行指令,当处理器执行所述计算机执行指令时,实现如上所述的业务处理方法。
373.在另一个实施例中,本技术还提供一种计算机程序产品,包括计算机程序,所述计算机程序被处理器执行时,实现如上所述的业务处理方法。
374.对于装置实施例而言,由于其基本对应于方法实施例,所以相关之处参见方法实施例的部分说明即可。以上所描述的装置实施例仅仅是示意性的,其中所述作为分离部件说明的模块可以是或者也可以不是物理上分开的,作为模块显示的部件可以是或者也可以不是物理模块,即可以位于一个地方,或者也可以分布到多个网络模块上。可以根据实际的需要选择其中的部分或者全部模块来实现本技术方案的目的。本领域普通技术人员在不付出创造性劳动的情况下,即可以理解并实施。
375.上述对本技术特定实施例进行了描述。其它实施例在所附权利要求书的范围内。在一些情况下,在权利要求书中记载的动作或步骤可以按照不同于实施例中的顺序来执行并且仍然可以实现期望的结果。另外,在附图中描绘的过程不一定要求示出的特定顺序或者连续顺序才能实现期望的结果。在某些实施方式中,多任务处理和并行处理也是可以的或者可能是有利的。
376.本领域技术人员在考虑说明书及实践这里申请的发明后,将容易想到本技术的其它实施方案。本技术旨在涵盖本技术的任何变型、用途或者适应性变化,这些变型、用途或者适应性变化遵循本技术的一般性原理并包括本技术未申请的本技术领域中的公知常识或惯用技术手段。说明书和实施例仅被视为示例性的,本技术的真正范围和精神由下面的权利要求指出。
377.应当理解的是,本技术并不局限于上面已经描述并在附图中示出的精确结构,并且可以在不脱离其范围进行各种修改和改变。本技术的范围仅由所附的权利要求来限制。另外,本技术所涉及的数据可以为经用户授权或者经过各方充分授权的数据。
378.以上所述仅为本技术的较佳实施例而已,并不用以限制本技术,凡在本技术的精
神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本技术保护的范围之内。
再多了解一些

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

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

相关文献