[发明专利]基于反转单链表的锁无关消息队列实现方法有效

专利信息
申请号: 201310102077.5 申请日: 2013-03-27
公开(公告)号: CN103176837A 公开(公告)日: 2013-06-26
发明(设计)人: 周克利;唐杰;武港山 申请(专利权)人: 南京大学
主分类号: G06F9/46 分类号: G06F9/46
代理公司: 南京天翼专利代理有限责任公司 32112 代理人: 黄明哲
地址: 210093 江*** 国省代码: 江苏;32
权利要求书: 查看更多 说明书: 查看更多
摘要: 基于反转单链表的锁无关消息队列实现方法,用于2线程服务器架构,包括a)基于反转单链表的锁无关消息队列的数据结构,b)基于所述数据结构实现的两个锁无关方法的操作函数:Push函数和Pop函数;2线程间通过所述锁无关消息队列,在所述锁无关方法下进行通讯。本发明在2个线程的服务器架构上,创新性的提出了基于反转单链表的锁无关消息队列的方法,并且没用使用任何昂贵的原子指令,将计算量降低到最低,使得执行效率非常高,通过实验,本发明提出的基于反转单链表的锁无关消息队列在2个线程的服务器架构下,执行速度是传统的基于锁的消息队列的数倍。
搜索关键词: 基于 反转 单链表 无关 消息 队列 实现 方法
【主权项】:
基于反转单链表的锁无关消息队列实现方法,用于2线程服务器架构,其特征包括:a)基于反转单链表的锁无关消息队列的数据结构,b)基于所述数据结构实现的两个锁无关方法的操作函数:Push函数和Pop函数;2线程间通过所述锁无关消息队列,在所述锁无关方法下进行通讯,其中:1)、反转单链表的数据结构为:struct LisElement{             struct LisElement*prev;   };反转单链表中,每个链表元素只有一个指向其前一项链表元素的指针prev;2)基于所述反转单链表的锁无关消息队列的数据结构为:2a)设有一个指向反转单链表的链表头的head指针;2b)设有一个指向反转单链表的链表尾的tail指针;2c)设有一个指向上次Pop出去元素项的last指针;3)基于所述锁无关消息队列的Push函数,包括以下几个要素:3a)head指针只在最开始时为NULL,此时tail指针也为NULL,这种情况下,在Push第一个消息Push结束前,Pop函数总是返回NULL;3b)在Push第一个消息时,对tail的赋值要在Push函数返回之前最后一个执行,使得Pop函数在Push函数结束前,总是返回NULL;3c)每个新来的消息,都分配一个struct ListElement数据结构,即反转单链表的数据结构,并将其赋值;3d)对于每一个消息项,Push函数在将其链入消息队列之前对其执行写操作,当其在消息队列里以后,Push函数不对其进行任何修改;3e)只有Push函数永远不会被访问的元素项,才能由Pop释放内存;3f)刚刚Pop出去的元素项不会被立即释放,而是存在last指针里,只有再次Pop出其他元素项时,last指针当前指向的元素项才会被释放;4)基于所述锁无关消息队列的Pop函数,分为以下情况:4a)如果tail==NULL&&last==NULL,那么消息队列处于未初始化状态,Pop返回NULL;4b)如果tail==NULL&&last!=NULL,那么tail=last→prev,如果这时候tail还为NULL,说明消息队列为空,Pop返回NULL;4c)如果tail!=NULL,那么tail指向的是一个正确的消息项,需要更新last指针, 如果last指针之前不为NULL,则将其内存释放,让last指向最新释放的消息项,并将tail值更新为tail=tail→prev;在2线程的服务器架构下,其中一个线程A为收发网络消息数据包的通讯线程,另一个线程B为处理服务器内部逻辑的主线程,这2个线程间通过所述锁无关消息队列和操作函数进行通讯:a)定义一个基于反转单链表的锁无关消息队列:MsgQueue;b)线程A从网络收到消息数据包Packet,执行MsgQueue.Push(Packet),即将收到的消息数据包通过Push函数添加进锁无关消息队列里;c)线程B每次要处理服务器内部逻辑之前,都尝试通过pop函数从锁无关消息队列MsgQueue中读取新的消息:Packet=MsgQueue.Pop()。
下载完整专利技术内容需要扣除积分,VIP会员可以免费下载。

该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于南京大学,未经南京大学许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服

本文链接:http://www.vipzhuanli.com/patent/201310102077.5/,转载请声明来源钻瓜专利网。

×

专利文献下载

说明:

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

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

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

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

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

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

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

钻瓜专利网在线咨询

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

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