[发明专利]一种基于共享内存的消息传递方法无效
申请号: | 200910044403.5 | 申请日: | 2009-09-25 |
公开(公告)号: | CN101763289A | 公开(公告)日: | 2010-06-30 |
发明(设计)人: | 廖湘科;刘晓建;戴华东;任怡;谭郁松;吴庆波;易晓东;张卫华;孔金珠;颜跃进;董攀;邵立松;李姗姗 | 申请(专利权)人: | 中国人民解放军国防科学技术大学 |
主分类号: | G06F9/54 | 分类号: | G06F9/54;G06F9/38 |
代理公司: | 国防科技大学专利服务中心 43202 | 代理人: | 郭敏 |
地址: | 410073 *** | 国省代码: | 湖南;43 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 基于 共享 内存 消息 传递 方法 | ||
1.一种基于共享内存的消息传递方法,其特征在于包括以下步骤:
第一步,在共享内存中创建并初始化消息缓冲区——消息槽数组,消息槽数组每个元素 包含一个消息槽及该消息槽对应的状态,每个消息槽处于以下三种状态之一:“有消息”, “无消息”、“使用中”;初始化时所有的消息槽都设置成“无消息”状态,当消息槽被生 产者获取后,生产者将消息槽改为“使用中”状态;当生产者将已生产的消息放入消息 槽后,它将消息槽状态由“使用中”修改为“有消息”;当处于“有消息”状态的消息槽 被消费者获得后,消息槽的状态被更新为“使用中”;当消费者获得了完整消息之后,它 将消息槽的状态由“使用中”更新为“无消息”;同时,在共享内存中分配两个变量head 和tail,并令head=tail=0,这两个变量只能按照递增的方式进行改变,它们的取值被称为 版本号;同时,head/tail也是消息槽数组的索引,head指向的编号为head%C的消息槽, tail指向编号为tail%C的消息槽,其中%为求余数运算;C为消息槽数组的容量,C的大 小由生产者或消费者数量、生产者或消费者生产或消费消息的频度、系统对“消息槽满” 事件的容忍程度、系统可用内存综合决定;
第二步,第x个生产者Px采用以下方法访问消息槽数组,以插入其生产出的消息,x为 小于生产者个数M的自然数:
2.1创建生产者Px的私有变量cached_tailx;
2.2将当前的tail值缓存到Px的私有变量cached_tailx中;
2.3判断cached_tailx是否与head+C相等,若相等则执行用户自定义的“消息缓冲区 满”处理流程,然后转步骤2.2,若不相等则转2.4;
2.4比较交换原子指令CAS(&tail,cached_tailx,cached_tailx+1),若指令失败则转步骤 2.2,否则执行2.5;
2.5使用CAS(&stat,无消息,使用中)操作修改cached_tailx指向的消息槽状态,尝试 将cached_tailx指向的消息槽的状态设置成“使用中”状态,若操作失败转2.2,否 则执行2.6,其中stat为cached_tailx指向的消息槽的状态变量;
2.6将消息写入cached_tailx指向的消息槽;
2.7释放消息槽:将cached_tailx指向的消息槽的状态由“使用中”更新为“有消息”, 释放本生产者的私有变量cached_tailx;
第三步,消费者CX采用以下方法访问消息槽数组,以获取消息:
3.1创建消费者Cx的私有变量cached_headx;
3.2将当前的head值缓存到cached_headx中;
3.3判断cached_headx是否与tail相等,若相等则执行用户自定义的“消息缓冲区空” 处理流程,转步骤3.2,若不相等则转3.4;
3.4执行CAS(&head,cached_headx,cached_headx+1)指令,若指令失败则转步骤3.2, 否则执行3.5;
3.5使用CAS(&statx,有消息,使用中)操作修改cached_headx指向的消息槽状态,尝 试将cached_headx指向的消息槽的状态设置成“使用中”状态;若操作失败转3.2, 否则执行3.6,其中statx为cached_headx指向的消息槽的状态变量;
3.6读取cached_headx指向的消息槽中的消息;
3.7释放消息槽:将cached_headx指向的消息槽状态由“使用中”更新为“无消息”, 释放本消费者的私有变量cached_headx。
2.如权利要求1所述的基于共享内存的消息传递方法,其特征在于所述消息槽数组 从0开始编号。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于中国人民解放军国防科学技术大学,未经中国人民解放军国防科学技术大学许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/200910044403.5/1.html,转载请声明来源钻瓜专利网。