[发明专利]一种多核环境下基于数组结构的无等待栈操作方法有效
申请号: | 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/,转载请声明来源钻瓜专利网。
- 上一篇:提扣
- 下一篇:包装箱(中老年黑牛奶)