[发明专利]一种串行事件转换成并行事件的方法无效
申请号: | 201310322497.4 | 申请日: | 2013-07-29 |
公开(公告)号: | CN103345385A | 公开(公告)日: | 2013-10-09 |
发明(设计)人: | 程卫双 | 申请(专利权)人: | 北京汉邦高科数字技术股份有限公司 |
主分类号: | G06F9/38 | 分类号: | G06F9/38 |
代理公司: | 北京中北知识产权代理有限公司 11253 | 代理人: | 冯梦洪 |
地址: | 100089 北京市海淀区长*** | 国省代码: | 北京;11 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 串行 事件 转换 并行 方法 | ||
技术领域
本发明涉及计算机的技术领域,更具体地涉及一种串行事件转换成并行事件的方法。
背景技术
我们在做计算机应用开发的时候经常会遇到这样的问题,当一个事件触发时需要执行一些业务逻辑代码。当这些业务逻辑代码执行时间极短可以忽略不计时,所以并不会有什么问题。如果这些业务逻辑代码执行时间不能忽略时,就会阻塞事件回调函数,而且业务逻辑之间是串行执行的,需要进行并行化处理。
发明内容
本发明的技术解决问题是:克服现有技术的不足,提供一种不会阻塞事件回调函数、同时使原本只能串行执行的业务逻辑能并行地被执行的串行事件转换成并行事件的方法。
本发明的技术解决方案是:这种串行事件转换成并行事件的方法,包括事件定义、事件接收处理、事件分发三个步骤,其中:
(1)事件定义步骤定义事件数据结构,事件数据结构包括事件类型标识号、原始事件所需参数组成的数据结构指针、原始事件所需参数组成的数据结构长度、事件分发函数指针链表、当前事件的引用计数;
(2)事件接收处理步骤包括:
(2.1)定义一个事件队列、一个事件队列监视线程、一个内存池、一个线程池;
(2.2)从事件源处接收事件所需参数;
(2.3)根据参数大小从内存池中申请内存并初始化步骤(1)的事件数据结构;
(2.4)把事件数据结构存放在事件容器中;
(3)事件分发步骤包括:
(3.1)从事件容器中取出事件数据结构;
(3.2)利用线程池技术把事件数据结构中的原始参数分发到相应的分发函数中。
由于本方法的事件定义、事件接收处理、事件分发三个步骤,通过使用内存池技术、线程池技术和业务控制逻辑来实现串行事件并行化,成功地完成串行事件的并行化处理,在事件回调函数中即使有很多耗时的业务逻辑,只要合理分配分发函数,也不会阻塞该事件回调函数,同时也使原本只能串行执行的业务逻辑能并行地被执行。
附图说明
图1是根据本发明的一个优选实施例的示意图。
具体实施方式
这种串行事件转换成并行事件的方法,包括事件定义、事件接收处理、事件分发三个步骤,其中:
(1)事件定义步骤定义事件数据结构,事件数据结构包括事件类型标识号、原始事件所需参数组成的数据结构指针、原始事件所需参数组成的数据结构长度、事件分发函数指针链表、当前事件的引用计数;
(2)事件接收处理步骤包括:
(2.1)定义一个事件队列、一个事件队列监视线程、一个内存池、一个线程池;
(2.2)从事件源处接收事件所需参数;
(2.3)根据参数大小从内存池中申请内存并初始化步骤(1)的事件数据结构;
(2.4)把事件数据结构存放在事件容器中;
(3)事件分发步骤包括:
(3.1)从事件容器中取出事件数据结构;
(3.2)利用线程池技术把事件数据结构中的原始参数分发到相应的分发函数中。
下面简要介绍一下内存池和线程池。
内存池(Memory Pool)是一种内存分配方式,具体公开在网页:
http://www.cnblogs.com/bangerlee/archive/2011/08/31/2161421.html。通常我们习惯直接使用new、malloc等API申请分配内存,这样做的缺点在于:由于所申请内存块的大小不定,当频繁使用时会造成大量的内存碎片并进而降低性能。
内存池则是在真正使用内存之前,先申请分配一定数量的、大小相等(一般情况下)的内存块留作备用。当有新的内存需求时,就从内存池中分出一部分内存块,若内存块不够再继续申请新的内存。这样做的一个显著优点是尽量避免了内存碎片,使得内存分配效率得到提升。
内存池实现方案
首先给出该方案的整体架构,结构中主要包含block、list和pool这三个结构体,block结构包含指向实际内存空间的指针,前向和后向指针让block能够组成双向链表;list结构中free指针指向空闲内存块组成的链表,used指针指向程序使用中的内存块组成的链表,size值为内存块的大小,list之间组成单向链表;pool结构记录list链表的头和尾。
内存跟踪策略
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于北京汉邦高科数字技术股份有限公司,未经北京汉邦高科数字技术股份有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201310322497.4/2.html,转载请声明来源钻瓜专利网。