[发明专利]一种并发算法在审

专利信息
申请号: 202111051737.2 申请日: 2021-09-09
公开(公告)号: CN113742092A 公开(公告)日: 2021-12-03
发明(设计)人: 李永进;张骄阳 申请(专利权)人: 李永进
主分类号: G06F9/52 分类号: G06F9/52
代理公司: 暂无信息 代理人: 暂无信息
地址: 河南省南阳市*** 国省代码: 河南;41
权利要求书: 查看更多 说明书: 查看更多
摘要:
搜索关键词: 一种 并发 算法
【说明书】:

随着计算机并行时代的到来,基于锁的并发控制非常容易导致宝贵的CPU时间被浪费在等待上。为了解决这个问题,本发明提出一种无锁并发算法,将一个程序按照线程为单位,分别划分为多个代码块,分别交给各CPU或独立执行模块(以下称为CPU核)执行。将具有同一互斥关系的代码块依次执行,避免了CPU空转等待,又可以设置执行顺序和优先级。在本算法支持下,计算机系统甚至将不再需要硬件锁及其相关指令。

技术领域

本技术属于计算机软件、硬件算法、编译优化领域。

背景技术

随着计算机技术的发展,如今的计算机硬件和软件都进入了并行时代,这使得目前的软硬件并发技术遇到了空前的挑战。在高并发情况下,数据的一致性同步变得困难,基于锁的并发控制非常容易导致宝贵的CPU时间被浪费在等待上。为了解决这个问题,本发明提出一种从底层技术到上层应用都可以使用的算法,让系统的等待时间趋近于0,同时简化并发编程和硬件的复杂度,提高计算机系统的性能,降低系统的设计难度。

发明内容

本发明为一种并发算法,算法的主要内容是:将一个程序按照线程为单位,分别划分为多个代码块,分别交给各CPU或独立执行模块(以下称为CPU核)执行。其中,在具有同一互斥关系的代码块的集合中,同一时间只能有一个该代码块执行。该代码块执行完之后才能执行同一互斥关系的另一个代码块。这样就避免了CPU 空转等待,又可以设置执行顺序和优先级。在本算法支持下,计算机系统甚至将不再需要硬件锁及其相关指令。

现代多核计算机程序通常使用锁、临界区等机制,保证某块代码在线程间的访问安全。但是这种机制是抢占式的,存在CPU核的空转等待等问题。因此,本发明提出一种新的结构,在逻辑上保证一组互斥的代码块中,同一时间只能执行一个代码块。称这种代码块为互斥块。具有同一个互斥关系的代码块集合,称为互斥组。这种机制依靠的是程序的执行顺序,而非软硬件锁机制。详细过程如下:

程序运行时启动多个线程(单线程程序不在考虑之内)(见图1),各线程分别调度代码给CPU核执行(见图2)。例如,图1 中所示,程序中有m个线程,每个线程有n个代码块,分别从Code_blockm1到Code_blockmn。将这些代码块调度给k个CPU核,调度结果假设为图2,不包括任何互斥要求。但如果线程之间存在互斥组(见图3,Code_mutex13表示互斥组1,互斥块号为3),则在执行互斥组内的任意互斥块时,只有一个互斥块被执行,其他需要执行的互斥块只能等待。该互斥块执行完毕之后,再执行互斥组内的另一个互斥块,直到执行完整个互斥组中需要执行的互斥块(见图4,其他代码块执行可能没有图中这么规整,只用作示意。)。在整个执行过程中没有使用锁,也没有产生任何的CPU空转。

在此基础上,对于特定线程还可以指定一个优先级规则,使该线程按照该规则执行。

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

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

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

×

专利文献下载

说明:

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

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

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

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

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

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

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

钻瓜专利网在线咨询

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

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