[發明專利]一種串行事件轉換成并行事件的方法無效
| 申請號: | 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.szxzyx.cn/pat/books/201310322497.4/2.html,轉載請聲明來源鉆瓜專利網。





