[發明專利]一種多任務間數據通信的實現方法及系統無效
| 申請號: | 201110329140.X | 申請日: | 2011-10-26 |
| 公開(公告)號: | CN102426536A | 公開(公告)日: | 2012-04-25 |
| 發明(設計)人: | 梁亞寧 | 申請(專利權)人: | 深圳市亞特爾科技有限公司 |
| 主分類號: | G06F9/46 | 分類號: | G06F9/46;G06F9/54 |
| 代理公司: | 北京英特普羅知識產權代理有限公司 11015 | 代理人: | 齊永紅;郭少晶 |
| 地址: | 518000 廣東省深圳*** | 國省代碼: | 廣東;44 |
| 權利要求書: | 查看更多 | 說明書: | 查看更多 |
| 摘要: | |||
| 搜索關鍵詞: | 一種 任務 數據通信 實現 方法 系統 | ||
技術領域
本發明涉及數據通信領域,尤其涉及一種多任務間數據通信的實現方法及系統。
背景技術
在嵌入式系統的應用中,往往會遇到有大量實時數據需要送到不同程序由不同的客戶端進行處理的情況,此時還要求數據分發過程中每個處理進程在所需數據丟失時,能夠得到通知并知道所丟失的數據數量。但是,這些數據本身通常產生的速率較高,相對于嵌入式系統有限的內存來說,占用的內存空間較為可觀,而大量數據在進程間交換時,通常采用高效的共享內存機制。
但是,在應用上述共享內存機制時,發明人發現現有技術中至少存在如下問題:共享內存在多個進程同時訪問時,缺乏同步機制,容易造成共享數據的紊亂,使得共享內存中數據與源數據不再一致。同時,共享內存采用無格式數據,不便于數據的處理。
發明內容
本發明的實施例提供一種多任務間數據通信的實現方法及系統,以便提高Linux系統中的數據處理效率。
為達到上述目的,本發明的實施例采用如下技術方案:
一種多任務間數據通信的實現方法,包括:
分發模塊從數據源處獲取數據;
分發模塊根據作為消費者的各客戶端模塊已注冊的數據類型和客戶端特性信息將所述數據寫入到共享內存;
所述分發模塊根據所述已注冊的數據類型和客戶端特性信息通知所述作為消費者的各客戶端模塊來讀取所述共享內存中的數據。
進一步,上述方法還可還包括:
所述分發模塊在任務啟動時,鏈接到已創建的用于為所述作為消費者的各客戶端模塊存儲數據的共享內存上;向數據結構注冊自己的數據類型和特性信息,其中,所述特性信息至少包括分發模塊ID和數據寫入共享內存的寫入方式;根據分發模塊ID創建與自身相對應的消息隊列,并根據各客戶端模塊ID創建與各客戶端模塊一一對應的消息隊列;創建用于指示寫入的操作鎖;
所述作為消費者的各客戶端模塊在其任務啟動時,鏈接到已創建的用于為其存儲數據的共享內存上;向數據結構注冊用于指示分發模塊通知作為消費者的客戶端模塊讀取所述共享內存中的數據的信息和客戶端特性信息,其中,客戶端特性信息至少包括所述客戶端模塊ID和從共享內存中讀取數據的讀取方式;每個作為消費者的客戶端模塊均根據分發模塊ID創建與分發模塊相對應的消息隊列,并根據自身的客戶端模塊ID創建與自身相對應的消息隊列,以及根據其他客戶端模塊ID創建與其他客戶端模塊一一對應的消息隊列;創建所述用于指示讀取的操作鎖。
進一步,該方法還可包括:
所述分發模塊在所述寫入之前,將所述用于指示寫入的操作鎖指示為寫鎖,代表在寫入所述共享內存的過程不接收其他訪問;
所述分發模塊在通知所述作為消費者的各客戶端模塊來讀取所述共享內存中的數據之后,將所述用于指示寫入的操作鎖指示為解寫鎖。
相應地,該方法還可包括:
對于每個所述作為消費者的客戶端模塊,在接收到所述分發模塊的所述通知后,將所述用于指示讀取的操作鎖指示為讀鎖,代表在讀取所述共享內存的過程中允許讀訪問,但拒絕寫訪問,并開始讀取所述共享內存中的數據;
每個所述作為消費者的客戶端模塊,在讀取完所述共享內存中的數據后,將所述用于指示讀取的操作鎖指示為解讀鎖。
其中,所述開始讀取所述共享內存中的數據具體為:每個所述作為消費者的客戶端模塊根據注冊時的讀取方式開始讀取所述共享內存中的數據,所述讀取方式包括:先寫入先讀取方式,后寫入先讀取方式,以及同時讀取多個數據的方式。
特別地,該方法還包括:
每個所述作為消費者的客戶端模塊在每次讀取完所述共享內存中的數據后,通過置所述共享內存中的一個標識位的方式通知所述分發模塊是否繼續向所述作為消費者的各客戶端模塊的消息隊列發送讀取共享內存的通知。
一種多任務間數據通信的實現系統,包括:分發模塊,和至少一個客戶端模塊;其中,所述至少一個客戶端模塊至少可成為作為消費者的客戶端模塊;
所述分發模塊,用于根據所述作為消費者的客戶端模塊已注冊的數據類型和客戶端特性信息將所述數據寫入到共享內存中;并根據所述已注冊的數據類型和客戶端特性信息通知所述作為消費者的客戶端模塊來讀取所述共享內存中的數據;
所述作為消費者的客戶端模塊,用于在接收到所述通知后,開始讀取所述共享內存中的數據。
該專利技術資料僅供研究查看技術是否侵權等信息,商用須獲得專利權人授權。該專利全部權利屬于深圳市亞特爾科技有限公司,未經深圳市亞特爾科技有限公司許可,擅自商用是侵權行為。如果您想購買此專利、獲得商業授權和技術合作,請聯系【客服】
本文鏈接:http://www.szxzyx.cn/pat/books/201110329140.X/2.html,轉載請聲明來源鉆瓜專利網。





