[发明专利]一种消息的读写方法和装置有效

专利信息
申请号: 200710304415.8 申请日: 2007-12-27
公开(公告)号: CN101470636A 公开(公告)日: 2009-07-01
发明(设计)人: 朱律玮;任宇;马新群;邹强 申请(专利权)人: 北京东方通科技发展有限责任公司
主分类号: G06F9/54 分类号: G06F9/54
代理公司: 北京路浩知识产权代理有限公司 代理人: 刘长威
地址: 100080北京市*** 国省代码: 北京;11
权利要求书: 查看更多 说明书: 查看更多
摘要:
搜索关键词: 一种 消息 读写 方法 装置
【说明书】:

技术领域

发明涉及计算机技术领域,特别是涉及一种消息的读写方法和装置。

背景技术

通过消息队列进行数据传输是UNIX操作系统的IPC(InterProcess Communication,进程间通讯)的基本方法之一,被广泛地使用于分布式应用程序间的数据交换。应用程序通过调用系统提供的API(Application Programming Interface,应用程序接口)函数访问目标消息队列,读取或写入数据。根据调用函数的不同,应用程序可以分为两种,消息的生产者和消费者,消息的生产者和消费者通过指定所发或所收消息的类型来建立联系。每一条消息在消息队列中都是唯一的,只能被一个生产者发送后进入队列,被一个消费者接收后取出队列。

任何一个消息队列都支持多个应用进程或线程同时对其访问,消息队列系统提供互斥处理机制,可以保证各个应用进程或线程的安全访问,不会出现冲突。其中,多个应用进程或线程可以处理不同类型的消息。例如,A进程发送X类型的消息,B进程发送Y类型的消息,C进程接收X类型的消息,D进程接收Y类型的消息,因此进程A、C和B、D分别配对,而彼此间没有影响。另外,多个应用进程或线程也可以处理相同类型的消息。例如,A进程发送X类型的消息,B、C、D进程都接收X类型的消息,当有一条X类型的消息到达队列时,B、C、D其中的一个可以收到这条消息,其他进程则处于等待状态。

消息队列支持两种使用模式,一种使用模式为:首先,消息的生产者产生某种类型的消息,并将该消息放入消息队列;然后,消息的消费者从消息队列中接收该类型的消息。如果有多个消息的消费者,则消费者按照调用的先后顺序从队列中接收消息,直到队列中该类型的消息为空。另一种使用模式为:如果消息队列中某种类型的消息为空,则消息的消费者调用接收函数,处于等待状态;当消息的生产者产生该类型的消息并将该消息放入消息队列时,消息的消费者就可以立即取得该消息。

在实现本发明过程中,发明人发现现有技术中至少存在如下问题:当消息队列中的某一类型的消息为空,且同时有大量消息的消费者处于等待状态时,该些消费者不占用CPU时间;而当消息的生产者产生某种类型的消息并将该消息放入消息队列时,所有处于等待状态的消费者都被唤醒,而无论该消费者是否需要接收该种类型的消息。被唤醒的消费者会在消息队列中对需要的消息进行查询,其中一个消费者收到该消息,而其他消费者会在遍历所有的消息后再次进入等待状态。因此,当消息的产生非常频繁时,所有处于等待状态的消费者会被反复唤醒,因此该些消费者会占用大量的CPU时间,产生非常大的无谓的系统开销,消息的并发接收能力急剧下降。当硬件系统采用多CPU结构时,产生的问题更加明显。

发明内容

本发明实施例要解决的问题是提供一种消息的读写方法和装置,以克服现有技术中由于消费者被无谓唤醒而造成占用大量CPU时间的缺陷。

为达到上述目的,本发明实施例的技术方案提供一种消息的读写方法,包括以下步骤:将消息从生产者发送到消息队列的步骤;根据所述消息的类型,查询消息同步表,如果所述消息同步表中存在与所述消息的类型对应的记录,则确认有对应的消费者的步骤;当有对应的消费者时,唤醒所述对应的消费者中的一个消费者的步骤;将所述消息发送给所述被唤醒的消费者的步骤。

其中,在所述生产者唤醒对应的消费者中的一个消费者的步骤中,具体包括:获取与所述消息的类型对应的记录的下标;如果所述记录的等待消费者的数量大于0,则获取与所述下标对应的消息同步信号灯,对所述消息同步信号灯进行V操作,并将所述记录中等待消费者的数量减1。

其中,在所述生产者查询消息同步表之前,还包括消费者加入等待队列的步骤,该消费者加入等待队列的步骤具体包括:根据需读取消息的类型,查询所述消息同步表,如果所述消息同步表中存在与所述需读取消息的类型对应的记录,则将所述记录中等待消费者的数量加1;获取与所述需读取消息的类型对应的记录的下标;获取与所述下标对应的消息同步信号灯;对所述消息同步信号灯进行P操作。

其中,在所述生产者查询消息同步表之前,还包括消费者建立消息同步表记录并加入等待队列的步骤,该消费者建立消息同步表记录并加入等待队列的步骤具体包括:根据需读取消息的类型,查询所述消息同步表,如果所述消息同步表中没有与所述需读取消息的类型对应的记录,则在所述消息同步表中建立消息同步表记录,并对所述记录进行初始化;获取所述记录的下标;获取与所述下标对应的消息同步信号灯;对所述消息同步信号灯进行P操作。

下载完整专利技术内容需要扣除积分,VIP会员可以免费下载。

该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于北京东方通科技发展有限责任公司,未经北京东方通科技发展有限责任公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服

本文链接:http://www.vipzhuanli.com/pat/books/200710304415.8/2.html,转载请声明来源钻瓜专利网。

×

专利文献下载

说明:

1、专利原文基于中国国家知识产权局专利说明书;

2、支持发明专利 、实用新型专利、外观设计专利(升级中);

3、专利数据每周两次同步更新,支持Adobe PDF格式;

4、内容包括专利技术的结构示意图流程工艺图技术构造图

5、已全新升级为极速版,下载速度显著提升!欢迎使用!

请您登陆后,进行下载,点击【登陆】 【注册】

关于我们 寻求报道 投稿须知 广告合作 版权声明 网站地图 友情链接 企业标识 联系我们

钻瓜专利网在线咨询

周一至周五 9:00-18:00

咨询在线客服咨询在线客服
tel code back_top