一种实现快速数据传递的方法

文档序号:7615761阅读:207来源:国知局
专利名称:一种实现快速数据传递的方法
技术领域
本发明涉及在多任务系统中,尤其是在高效率的实时系统中,实现快速数据传递的方法。
背景技术
对于高效的实时多任务系统,尤其是在有大量任务间数据传递的软件系统,如通讯系统中,数据传递效率的高低,将直接影响到系统的性能,并往往成为决定系统开发成败的关键性因素。
在多任务系统中,任务间数据传递的最常用的工具是队列,在现有技术的大多数情况下,操作系统都提供用于数据传递的队列。在进行数据传递时,一般采取两种方法一发送任务将数据块拷贝到队列中,然后通知数据接收任务从队列中将数据拷贝到自己的数据区中。使用这种方法,由于数据拷贝的次数较多,不可避免带来效率低下的缺点。同时,当传递的数据块大小不确定时,队列的每个节点占用内存的大小也不好确定,实现这样的队列往往也将影响程序运行的效率。
方法二发送任务动态申请一块内存,然后将数据拷入这块内存中。发送任务将内存的指针放入队列,此后由接收任务在适当的时候从队列中将指针取出,通过该指针去获取所需的数据。使用此种方法,数据拷贝的次数比方法一要少,但是动态内存的申请和次数增加。由于动态内存的管理和队列的实现较复杂,并且动态内存的方式和队列的实现相对孤立,不能利用两者的一致性提高数据传递的效率,因而还是往往不能满足快速数据传递的要求。

发明内容
为了克服上述方法的缺点,本发明提出了一种可用于实现任务间快速数据传递的方法,以实现在软件系统中,尤其是在有大量消息传递的通信系统中的快速数据传递,达到提高通信效率,增强系统对数据传递处理能力的目的。
本发明所提出的快速数据传递方法是一种综合的数据传递策略,它是在提出了三种快速数据传递的子方法的基础上,根据实际情况合理地对方法加以选择,从而达到最大限度地提高数据传递效率的目的。
一种实现快速数据传递的方法,包括以下步骤确定一个给定大小的数组,并分别以HeadIndex、TailIndex表示头、尾索引号,并将HeadIndex和TailIndex初始化为任意一个合法值;判断数组中数据存放是否已超过数组容量的上限,如果已超过数组容量的上限,则认为是“错误处理”;否则,发送任务将数据放入尾索引相对应的数组元素中,将尾索引指向数组下一元素,通知数据接收任务;判断接收任务是否有可接收数据,如不是,则结束;如是,则继续;数据接收任务从数据传递数组中获取头索引所对应的数据;将头索引指向数据传递数组的下一个元素。
通过对本发明的附图和详细说明的了解,将有助于理解本发明所描述的快速数据传递方法的特性和优点。


图1是本发明数据快数传递的实现过程的流程图。
具体实施例方式
本发明中的方法是利用数组来传递任务间的数据,故又称数组法。此方法效率要高于链表法,但是传送数据的流量要受数组大小的限制。当数据传递量可以确定一个上限时,就可以使用本发明的数组法来完成数据的传递。此时要求在任一时刻,发送任务已经发出而未被接收任务获取的数据量必须小于一个给定的上限。
图1描述了本发明数据快速传递的实现步骤。为了进行数据的传输,首先确定一个给定大小的数组(步骤301)。数组的大小决定于最大传输数据量的大小。然后定义两个索引HeadIndex和TailIndex,分别用于表示存放第一个和最后一个有效数据的数组元素的下标。在使用该数组之前,需要将HeadIndex和TailIndex初始化为“0”值(步骤301)。
在需要进行数据传递时,发送任务首先判断数组中存放的数据量是否已经达到数组能够存放数据数量的上限。(步骤302)。如果是,则进行相应的错误处理(步骤303)。
当判断出数组中还存在可以存放数据的空闲元素后,发送任务将数据放入TailIndex所对应的数组元素中(步骤304),然后TailIndex将指向下一个数组元素(步骤305)。当TailIndex等于数组的大小时,TailIndex将被赋为“0”,从而重新指向数组的起始元素,实现对数组的循环操作。
数据发送任务通知数据接收任务接收数据。(步骤306)数据接收任务获得通知信息后,首先判断数组中是否有有用数据,如果有,则将HeadIndex所对应的数组元素取出,即可获得数据发送任务发出的数据。数据接收任务取出HeadIndex所对应的数组元素后,HeadIndex将指向下一个数组元素。当HeadIndex等于数组的大小时,HeadIndex将被赋为“0”,以实现对数组的循环操作。
权利要求
1.一种实现快速数据传递的方法,其特征在于,包括以下步骤步骤1、确定一个给定大小的数组,并分别以HeadIndex、TailIndex表示头、尾索引号,并将HeadIndex和TailIndex初始化为任意一个合法值;(301)步骤2、判断数组中数据存放是否已超过数组容量的上限,(302)如果已超过数组容量的上限,则认为是“错误处理”(303);否则,步骤3、发送任务将数据放入尾索引相对应的数组元素中,将尾索引指向数组下一元素,通知数据接收任务;(304、305、306)步骤4、判断接收任务是否有可接收数据(307),如不是,则结束;如是,则继续;步骤5、数据接收任务从数据传递数组中获取头索引所对应的数据(308);步骤6、将头索引指向数据传递数组的下一个元素(309)。
2.如权利要求1所述的实现快速数据传递的方法,其特征在于所述步骤5数据接收任务从数据传递数组中获取头索引所对应的数据,是将HeadIndex所对应的数组元素取出,之后,HeadIndex将指向下一个数组元素;当HeadIndex等于数组的大小时,HeadIndex将被赋为“0”,以实现对数组的循环操作。
全文摘要
本发明提出的快速数据传递方法,根据所传递数据的特点,当数据接收任务只使用来自发送任务的最新数据时,采用缓存法;本发明根据实际情况合理地对方法加以选择,最大限度地提高数据传递效率,尤其在有大量消息传递的通信系统中,能提高通信效率,增强系统对数据传递处理能力。
文档编号H04L12/56GK1694433SQ20051005226
公开日2005年11月9日 申请日期2001年3月30日 优先权日2001年3月30日
发明者刘和兴 申请人:中兴通讯股份有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1