[发明专利]一种多核环境下基于数组结构的无等待栈操作方法有效

专利信息
申请号: 201611186222.2 申请日: 2016-12-20
公开(公告)号: CN106843806B 公开(公告)日: 2019-04-26
发明(设计)人: 彭亚琼;郝志宇;刘永继;李大辉;崔磊 申请(专利权)人: 中国科学院信息工程研究所
主分类号: G06F9/30 分类号: G06F9/30;G06F9/52
代理公司: 北京君尚知识产权代理事务所(普通合伙) 11200 代理人: 司立彬
地址: 100093 *** 国省代码: 北京;11
权利要求书: 查看更多 说明书: 查看更多
摘要: 发明公开了一种多核环境下基于数组结构的无等待栈操作方法。本方法为:1)主程序初始化代表栈的全局数组,即分配一个包含N个数组元素的段;2)启动m个线程,每个线程维护一存储自己运行状态的变量hi;该变量hi包含指针next、入栈伙伴指针和出栈伙伴指针;3)利用变量hi中的next指针,将该m个线程的运行状态链接为环状;4)该主程序等待接收线程对栈进行操作的请求;如果线程的操作请求为入栈请求,则执行无等待入栈操作;如果为出栈请求,则执行无等待出栈操作;如果销毁请求,则该主程序首先销毁栈,然后包括主程序在内的所有线程结束执行。本发明具有高并行度、低复杂度,为线程的操作提供无等待的进度保障。
搜索关键词: 一种 多核 环境 基于 数组 结构 等待 操作方法
【主权项】:
1.一种多核环境下基于数组结构的无等待栈操作方法,其步骤为:1)主程序初始化代表栈的全局数组,即分配一个包含N个数组元素的段;其中,每个数组元素包含用于存储入栈数据的变量val,指向入栈请求的指针push,以及指向出栈请求的指针pop;初始化两全局共享变量T、pc;其中,T为栈顶索引,pc为指示出栈请求的标识符;2)启动m个线程,每个线程thi维护一存储自己运行状态的变量hi;该变量hi包含指针next、入栈伙伴指针和出栈伙伴指针;其中,线程thi的入栈伙伴指针和出栈伙伴指针均初始指向线程thi;3)利用变量hi中的next指针,将该m个线程的运行状态链接为环状;4)该主程序等待接收线程对栈进行操作的请求;当线程thi对栈进行操作时,如果该线程thi的操作请求为入栈请求,则该线程thi执行无等待入栈操作;如果该线程thi的操作请求为出栈请求,则该线程thi执行无等待出栈操作;如果该线程thi的操作请求为栈的销毁请求,则该主程序首先销毁栈,然后包括主程序在内的所有线程结束执行;其中,所述无等待入栈操作为:首先利用比较并交换原子操作,尝试将入栈数据直接存入栈顶元素的val变量,当存入失败的次数超过给定阈值P后,会在本线程的运行状态中公布本次入栈请求;其它线程会在执行无等待出栈操作时,尝试为该入栈请求指定合适的入栈位置,以协助该入栈请求的完成;所述无等待出栈操作为:首先读取栈顶索引,然后从该索引所指的位置开始,朝索引值递减的方向依次尝试从相应元素出栈,当出栈失败的次数超过给定阈值P后,会在本线程的运行状态中公布本次出栈请求;其它线程会在执行无等待出栈操作时,尝试为该出栈请求指定合适的出栈位置,以协助该出栈请求的完成。
下载完整专利技术内容需要扣除积分,VIP会员可以免费下载。

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

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

×

专利文献下载

说明:

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

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

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

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

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

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

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

钻瓜专利网在线咨询

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

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