CN113434272B - 一种基于分布式缓存的线程调度方法和装置 - Google Patents
一种基于分布式缓存的线程调度方法和装置 Download PDFInfo
- Publication number
- CN113434272B CN113434272B CN202110712379.9A CN202110712379A CN113434272B CN 113434272 B CN113434272 B CN 113434272B CN 202110712379 A CN202110712379 A CN 202110712379A CN 113434272 B CN113434272 B CN 113434272B
- Authority
- CN
- China
- Prior art keywords
- thread
- result
- scheduled
- transaction lock
- locking
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
- 238000000034 method Methods 0.000 title claims abstract description 65
- 230000004044 response Effects 0.000 claims abstract description 10
- 230000008569 process Effects 0.000 claims description 18
- 238000004590 computer program Methods 0.000 claims description 14
- 238000013473 artificial intelligence Methods 0.000 abstract description 4
- 238000010586 diagram Methods 0.000 description 10
- 230000006870 function Effects 0.000 description 9
- 238000004891 communication Methods 0.000 description 5
- 238000005516 engineering process Methods 0.000 description 4
- 230000003287 optical effect Effects 0.000 description 3
- 230000005540 biological transmission Effects 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 230000001413 cellular effect Effects 0.000 description 1
- 230000008859 change Effects 0.000 description 1
- 239000004973 liquid crystal related substance Substances 0.000 description 1
- 238000004519 manufacturing process Methods 0.000 description 1
- 230000005055 memory storage Effects 0.000 description 1
- 230000000750 progressive effect Effects 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
- 238000006467 substitution reaction Methods 0.000 description 1
- 230000001360 synchronised effect Effects 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/48—Program initiating; Program switching, e.g. by interrupt
- G06F9/4806—Task transfer initiation or dispatching
- G06F9/4843—Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
- G06F9/4881—Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明实施例提供了一种基于分布式缓存的线程调度方法和装置,可用于人工智能技术领域,所述方法包括:接收待调度线程发送的资源请求;响应于资源请求,对待调度线程的事务锁状态信息、可访问资源的当前事务锁和线程等级进行判别处理,生成线程调度结果,在保证同一资源的串行化使用的前提下,能够进一步保证重要的、迫切的线程优先获取到资源,且在一定时间内多次申请资源的线程能成功获取到资源,提高线程申请资源的成功率。
Description
技术领域
本发明涉及计算机系统技术领域,特别涉及人工智能技术领域,尤其涉及一种基于分布式缓存的线程调度方法和装置。
背景技术
在分布式系统中,不同节点、容器之间存在资源争抢,为了避免访问资源出现死锁以及大量线程等待的问题,相关技术中是通过分布式缓存中申请锁的方式来保证同一资源的串行化使用。但上述方案中各线程之间自由争抢锁资源,无法保证重要的、迫切的线程优先获取到资源。此外,若一定时间内同一线程多次申请资源,不能保证多次申请都能申请成功,此类线程申请资源的成功率较低。
发明内容
本发明的一个目的在于提供一种基于分布式缓存的线程调度方法,在保证同一资源的串行化使用的前提下,能够进一步保证重要的、迫切的线程优先获取到资源,且在一定时间内多次申请资源的线程能成功获取到资源,提高线程申请资源的成功率。本发明的另一个目的在于提供一种基于分布式缓存的线程调度装置。本发明的再一个目的在于提供一种计算机可读介质。本发明的还一个目的在于提供一种计算机设备。
为了达到以上目的,本发明一方面公开了一种基于分布式缓存的线程调度方法,包括:
接收待调度线程发送的资源请求;
响应于资源请求,对待调度线程的事务锁状态信息、可访问资源的当前事务锁和线程等级进行判别处理,生成线程调度结果。
优选的,事务锁状态信息包括获取状态和获取时长,获取状态包括已获取或未获取;
对待调度线程的事务锁状态信息、可访问资源的当前事务锁和线程等级进行判别处理,生成线程调度结果,包括:
若获取状态为已获取且获取时长小于或等于预设的时长阈值,生成请求资源成功的线程调度结果;
若获取状态为已获取且获取时长大于预设的时长阈值,或者获取状态为未获取,判断是否已存在可访问资源的当前事务锁;
若已存在可访问资源的当前事务锁,对待调度线程的线程等级和当前事务锁进行判别处理,生成线程调度结果;
若不存在可访问资源的当前事务锁,对当前事物锁进行第二判别处理,生成线程调度结果。
优选的,对待调度线程的线程等级和当前事务锁进行判别处理,生成线程调度结果,包括:
根据待调度线程的线程等级,对当前事物锁进行第一判别处理,生成待调度线程的加锁结果,加锁结果包括加锁成功结果或加锁失败结果;
若加锁结果为加锁成功结果,对当前事物锁进行第二判别处理,生成线程调度结果;
若加锁结果为加锁失败结果,生成请求资源失败的线程调度结果。
优选的,线程等级包括第一等级或第二等级,第一等级优于第二等级;加锁成功结果包括第一加锁成功结果或第二加锁成功结果;
根据待调度线程的线程等级,对当前事物锁进行第一判别处理,生成待调度线程的加锁结果,包括:
若待调度线程的线程等级为第一等级,判断是否存在获取时长小于或等于预设的时长阈值的第一等级的当前事务锁;
若存在,生成加锁失败结果;
若不存在,生成第一加锁成功结果,第一加锁成功结果为对待调度线程添加第一等级的目标事务锁;
若待调度线程的线程等级为第二等级,判断是否存在获取时长小于或等于预设的时长阈值的第一等级的当前事务锁或获取时长小于或等于预设的时长阈值的第二等级的当前事务锁;
若存在,生成加锁失败结果;
若不存在,生成第二加锁成功结果,第二加锁成功结果为对待调度线程添加第二等级的目标事务锁。
优选的,若加锁结果为加锁成功结果,对当前事物锁进行第二判别处理,生成线程调度结果,包括:
若加锁成功结果为第一加锁成功结果,判断是否存在第二等级的当前事务锁;
若存在,控制待调度线程等待,并按照预设等待时间周期记录等待次数;
若等待次数大于预设等待阈值,控制待调度线程释放第一等级的目标事务锁,并生成请求资源失败的线程调度结果;
若等待次数小于或等于预设等待阈值,重复执行控制待调度线程等待,并按照预设等待时间周期记录等待次数的步骤;
若不存在,生成请求资源成功的线程调度结果。
优选的,若加锁结果为加锁成功结果,对当前事物锁进行第二判别处理,生成线程调度结果,包括:
若加锁成功结果为第二加锁成功结果,判断是否存在第一等级的当前事务锁;
若存在,生成请求资源失败的线程调度结果;
若不存在,生成请求资源成功的线程调度结果。
优选的,在响应于资源请求,对待调度线程的事务锁状态信息、可访问资源的当前事务锁和线程等级进行判别处理,生成线程调度结果之后,还包括:
若线程调度结果为请求资源成功,判断是否接收到待调度线程发送的资源请求;
若接收到待调度线程发送的资源请求,重复执行响应于资源请求,对待调度线程的事务锁状态信息、可访问资源的当前事务锁和线程等级进行判别处理,生成线程调度结果的步骤;
若未接收到待调度线程发送的资源请求,控制待调度线程释放目标事务锁。
本发明还公开了一种基于分布式缓存的线程调度装置,包括:
接收单元,用于接收待调度线程发送的资源请求;
第一生成单元,用于响应于资源请求,对待调度线程的事务锁状态信息、可访问资源的当前事务锁和线程等级进行判别处理,生成线程调度结果。
本发明还公开了一种计算机可读介质,其上存储有计算机程序,该程序被处理器执行时实现如上所述方法。
本发明还公开了一种计算机设备,包括存储器和处理器,所述存储器用于存储包括程序指令的信息,所述处理器用于控制程序指令的执行,所述处理器执行所述程序时实现如上所述方法。
本发明接收待调度线程发送的资源请求;响应于资源请求,对待调度线程的事务锁状态信息、可访问资源的当前事务锁和线程等级进行判别处理,生成线程调度结果,在保证同一资源的串行化使用的前提下,能够进一步保证重要的、迫切的线程优先获取到资源,且在一定时间内多次申请资源的线程能成功获取到资源,提高线程申请资源的成功率。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本发明实施例提供的一种基于分布式缓存的线程调度方法的流程图;
图2为本发明实施例提供的又一种基于分布式缓存的线程调度方法的流程图;
图3为本发明实施例提供的一种基于分布式缓存的线程调度装置的结构示意图;
图4为本发明实施例提供的一种计算机设备的结构示意图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
需要说明的是,本申请公开的一种基于分布式缓存的线程调度方法和装置可用于人工智能技术领域,也可用于除人工智能技术领域之外的任意领域,本申请公开的一种基于分布式缓存的线程调度方法和装置的应用领域不做限定。
为了便于理解本申请提供的技术方案,下面先对本申请技术方案的相关内容进行说明。在分布式系统中,会限制对资源同时访问的线程数量,因此,各个节点和容器之间存在资源争抢,相关技术中主要通过分布式缓存中申请锁的方式来保证同一资源的串行化使用,但上述方式无法保证最重要的、最迫切的线程能够最先获取到资源,导致线程获取资源的效率较低;另外,若线程在未超时的情况下多次获取资源,不能保证每次都能成功获取到资源,导致该线程获取资源的成功率较低。因此,本发明提出了一种基于分布式缓存的线程调度方法,在本发明中在同一时刻以只允许一个线程访问资源为例,按照线程功能将线程划分为不同优先级,不同优先级的线程能够申请对应于优先级的目标事务锁,规定较低优先级功能的线程需要较高优先级功能的线程的当前事务锁全部释放后才可以申请添加目标事务锁,从而保证较高优先级功能的线程能够最先获取到资源,即:保证最重要的、最迫切的线程能够最先获取到资源。
下面以基于分布式缓存的线程调度装置作为执行主体为例,说明本发明实施例提供的基于分布式缓存的线程调度方法的实现过程。可理解的是,本发明实施例提供的基于分布式缓存的线程调度方法的执行主体包括但不限于基于分布式缓存的线程调度装置。
图1为本发明实施例提供的一种基于分布式缓存的线程调度方法的流程图,如图1所示,该方法包括:
步骤101、接收待调度线程发送的资源请求。
步骤102、响应于资源请求,对待调度线程的事务锁状态信息、可访问资源的当前事务锁和线程等级进行判别处理,生成线程调度结果。
具体地,若获取状态为已获取且获取时长小于或等于预设的时长阈值,生成请求资源成功的线程调度结果;若获取状态为已获取且获取时长大于预设的时长阈值,或者获取状态为未获取,判断是否已存在可访问资源的当前事务锁;若已存在可访问资源的当前事务锁,对待调度线程的线程等级和当前事务锁进行判别处理,生成线程调度结果;若不存在可访问资源的当前事务锁,对当前事物锁进行第二判别处理,生成线程调度结果。
本发明实施例提供的技术方案中,接收待调度线程发送的资源请求;响应于资源请求,对待调度线程的事务锁状态信息、可访问资源的当前事务锁和线程等级进行判别处理,生成线程调度结果,在保证同一资源的串行化使用的前提下,能够进一步保证重要的、迫切的线程优先获取到资源,且在一定时间内多次申请资源的线程能成功获取到资源,提高线程申请资源的成功率。
图2为本发明实施例提供的又一种基于分布式缓存的线程调度方法的流程图,如图2所示,该方法包括:
步骤201、接收待调度线程发送的资源请求。
本发明实施例中,各步骤由基于分布式缓存的线程调度装置执行。
本发明实施例中,若待调度线程想要访问资源,需要向基于分布式缓存的线程调度装置发送资源请求。
步骤202、对待调度线程的事务锁状态信息进行判别处理,若获取状态为已获取且获取时长小于或等于预设的时长阈值,执行步骤203;若获取状态为已获取且获取时长大于预设的时长阈值,或者获取状态为未获取,执行步骤204。
本发明实施例中,事务锁用于限制访问可访问资源的线程数量,本发明实施例中以在同一时刻以只允许一个线程访问资源为例。可理解的是,还可以在同一时刻允许多个线程访问资源,本发明实施例对访问资源的线程数量不作限定。
本发明实施例中,事务锁状态信息包括获取状态和获取时长,获取状态包括已获取或未获取。其中,已获取表明待调度线程已添加有目标事务锁,未获取表明待调度线程未添加有目标事务锁,获取时长表明待调度线程从添加目标事务锁的时间到当前时间的时长。时长阈值可以根据实际需求预先设置,若获取时长大于时长阈值,表明该目标事务锁已超时,即:目标事务锁失效;若获取时长小于或等于时长阈值,表明该目标事务锁未超时,即:目标事务锁有效。
本发明实施例中,若待调度线程的获取状态为已获取且获取时长小于或等于预设的时长阈值,表明待调度线程已添加有目标事务锁且目标事务锁未超时,继续执行步骤203;若获取状态为已获取且获取时长大于预设的时长阈值,表明待调度线程虽然已添加有目标事务锁,但目标事务锁已超时,即:目标事务锁失效,若该线程想继续申请资源,需要重新申请添加目标事务锁,继续执行步骤204;若获取状态为未获取,表明待调度线程未添加有目标事务锁,继续执行步骤204。
步骤203、生成请求资源成功的线程调度结果,继续执行步骤208。
本发明实施例中,若待调度线程已添加有目标事务锁且目标事务锁未超时,将资源分配至该待调度线程,以使该线程能够获取到该资源。
进一步地,重置获取时长,具体地,将获取时长设置为0,重新开始计时。本发明实施例中,在时长阈值内,同一线程可以多次成功获取资源,保证了线程访问资源的成功率。
步骤204、判断是否已存在可访问资源的当前事务锁,若已存在可访问资源的当前事务锁,执行步骤205;若不存在可访问资源的当前事务锁,执行步骤206。
本发明实施例中,若判断出已存在可访问资源的当前事务锁,需要进一步判断当前事务所是否超时,继续执行步骤205;若判断出不存在可访问资源的当前事务锁,表明可以对待调度线程添加目标事务锁,继续执行步骤206。
步骤205、根据待调度线程的线程等级,对当前事物锁进行第一判别处理,生成待调度线程的加锁结果,加锁结果包括加锁成功结果或加锁失败结果;若加锁结果为加锁成功结果,执行步骤206;若加锁结果为加锁失败结果,执行步骤207。
本发明实施例中,线程等级包括第一等级或第二等级,第一等级优于第二等级;加锁成功结果包括第一加锁成功结果或第二加锁成功结果。其中,线程等级是根据线程功能进行划分的,将最重要、最迫切的线程划分为较高的等级,例如:同步交易功能的等级优于异步交易的等级,异部交易的等级优于批量交易的等级。线程等级可以根据实际需求进行划分,本发明对线程等级的划分规则不作限定。本发明实施例以将线程等级划分为第一等级和第二等级为例,可理解的是,还可以划分为多于两个的线程等级,本发明实施例对等级数量不作限定。
若待调度线程的线程等级为第一等级,步骤205具体包括:
步骤2051、判断是否存在获取时长小于或等于预设的时长阈值的第一等级的当前事务锁,若存在,执行步骤2052;若不存在,执行步骤2053。
本发明实施例中,若当前事务锁为第一等级且事务锁未超时,表明已有同等级线程在访问该资源,继续执行步骤2052;若当前事务锁不是第一等级或当前事务锁已超时,表明没有同等级线程在访问该资源,继续执行步骤2053。
步骤2052、生成加锁失败结果。
本发明实施例中,若已有同等级线程在访问该资源,则待调度资源不能访问该资源,加锁失败,请求资源失败。
步骤2053、生成第一加锁成功结果,第一加锁成功结果为对待调度线程添加第一等级的目标事务锁。
本发明实施例中,若没有同等级线程在访问该资源,对待调度线程添加第一等级的目标事务锁。
进一步地,若在加锁过程中存在未超时的第一等级的事务锁,则停止对待调度线程添加第一等级的目标事务锁,加锁失败,请求资源失败。
若待调度线程的线程等级为第二等级,步骤205具体包括:
步骤3051、判断是否存在获取时长小于或等于预设的时长阈值的第一等级的当前事务锁或获取时长小于或等于预设的时长阈值的第二等级的当前事务锁,若存在,执行步骤3052;若不存在,步骤3053。
本发明实施例中,若当前事务锁为未超时的第一等级的事务锁或未超时的第二等级的事务锁,表明已有高等级或同等级的线程在访问该资源,执行步骤3052;若当前事务锁不是未超时的第一等级的事务锁,也不是未超时的第二等级的事务锁,表明没有高等级或同等级的线程在访问该资源,执行步骤3053。
步骤3052、生成加锁失败结果。
本发明实施例中,若已有高等级或同等级的线程在访问该资源,则待调度资源不能访问该资源,加锁失败,请求资源失败。
步骤3053、生成第二加锁成功结果,第二加锁成功结果为对待调度线程添加第二等级的目标事务锁。
进一步地,若在加锁过程中存在未超时的第一等级的事务锁或未超时的第二等级的事务锁,则停止对待调度线程添加第二等级的目标事务锁,加锁失败,请求资源失败。
本发明实施例中,若没有高等级或同等级的线程在访问该资源,则对待调度线程添加第二等级的目标事务锁。
步骤206、对当前事物锁进行第二判别处理,生成线程调度结果。
若加锁成功结果为第一加锁成功结果,步骤206具体包括:
步骤2061、判断是否存在第二等级的当前事务锁,若存在,执行步骤2062;若不存在,执行步骤2064。
本发明实施例中,若对待调度线程添加第一等级的目标事务锁,且存在第二等级的当前事务锁,表明有低等级的线程在访问该资源,继续执行步骤2062;若对待调度线程添加第一等级的目标事务锁,且不存在第二等级的当前事务锁,表明没有低等级的线程在访问该资源,继续执行步骤2064。
步骤2062、控制待调度线程等待,并按照预设等待时间周期记录等待次数,若等待次数大于预设等待阈值,执行步骤2063;若等待次数小于或等于预设等待阈值,重复执行控制待调度线程等待,并按照预设等待时间周期记录等待次数的步骤(步骤2062)。
本发明实施例中,若有低等级的线程在访问该资源,控制待调度线程等待。等待时间周期可以根据实际需求进行设置,本发明实施例对此不作限定。按照等待时间周期记录等待次数,等待次数的初始值为0,每等待一个等待时间周期,等待次数进行加1处理。
本发明实施例中,等待阈值为最大等待次数,其值可以根据实际需求进行设置。若等待次数大于等待阈值,表明等待时间过长,继续执行步骤2063;若等待次数小于或等于等待阈值,表明可以控制待调度线程继续等待。
步骤2063、控制待调度线程释放第一等级的目标事务锁,并生成请求资源失败的线程调度结果。
本发明实施例中,若等待时间过长,控制待调度线程释放目标事务锁,请求资源失败。
步骤2064、生成请求资源成功的线程调度结果。
本发明实施例中,若没有低等级的线程在访问该资源,将资源分配至该待调度线程,以使该线程能够获取到该资源。
若加锁成功结果为第二加锁成功结果,步骤206具体包括:
步骤3061、判断是否存在第一等级的当前事务锁,若存在,执行步骤3062;若不存在,执行步骤3063。
本发明实施例中,若对待调度线程添加第二等级的目标事务锁,且存在第一等级的当前事务锁,表明有高等级的线程在访问该资源,继续执行步骤3062;若对待调度线程添加第二等级的目标事务锁,且不存在第一等级的当前事务锁,表明没有高等级的线程在访问该资源,继续执行步骤3063。
步骤3062、生成请求资源失败的线程调度结果。
本发明实施例中,若有高等级的线程在访问该资源,控制待调度线程释放目标事务锁,请求资源失败。
步骤3063、生成请求资源成功的线程调度结果。
本发明实施例中,若没有高等级的线程在访问该资源,将资源分配至该待调度线程,以使该线程能够获取到该资源。
步骤207、生成请求资源失败的线程调度结果,流程结束。
本发明实施例中,若加锁失败,生成请求资源失败的线程调度结果,表明该待调度线程请求资源失败,流程结束。
步骤208、若线程调度结果为请求资源成功,判断是否接收到待调度线程发送的资源请求,若接收到待调度线程发送的资源请求,执行步骤202;若未接收到待调度线程发送的资源请求,执行步骤209。
本发明实施例中,若已经成功获取资源的线程仍需要再次访问资源,需要再次向基于分布式缓存的线程调度装置发送资源请求,继续执行步骤202;若已经成功获取资源的线程在时长阈值内未向基于分布式缓存的线程调度装置发送资源请求,表明该线程不需要再次访问资源,继续执行步骤209。
步骤209、控制待调度线程释放目标事务锁。
本发明实施例中,若该线程不需要再次访问资源,控制该线程释放目标事务锁。
本发明实施例提供的基于分布式缓存的线程调度方法的技术方案中,接收待调度线程发送的资源请求;响应于资源请求,对待调度线程的事务锁状态信息、可访问资源的当前事务锁和线程等级进行判别处理,生成线程调度结果,在保证同一资源的串行化使用的前提下,能够进一步保证重要的、迫切的线程优先获取到资源,且在一定时间内多次申请资源的线程能成功获取到资源,提高线程申请资源的成功率。
图3为本发明实施例提供的一种基于分布式缓存的线程调度装置的结构示意图,该装置用于执行上述基于分布式缓存的线程调度方法,如图3所示,该装置包括:接收单元11和生成单元12。
接收单元11用于接收待调度线程发送的资源请求。
生成单元12用于响应于资源请求,对待调度线程的事务锁状态信息、可访问资源的当前事务锁和线程等级进行判别处理,生成线程调度结果。
本发明实施例中,生成单元12包括:第一生成子单元121、判断子单元122、第二生成子单元123和第三生成子单元124。
第一生成子单元121用于若获取状态为已获取且获取时长小于或等于预设的时长阈值,生成请求资源成功的线程调度结果。
判断子单元122用于若获取状态为已获取且获取时长大于预设的时长阈值,或者获取状态为未获取,判断是否已存在可访问资源的当前事务锁。
第二生成子单元123用于若已存在可访问资源的当前事务锁,对待调度线程的线程等级和当前事务锁进行判别处理,生成线程调度结果。
第三生成子单元124用于若不存在可访问资源的当前事务锁,对当前事物锁进行第二判别处理,生成线程调度结果。
本发明实施例中,第二生成子单元123具体用于根据待调度线程的线程等级,对当前事物锁进行第一判别处理,生成待调度线程的加锁结果,加锁结果包括加锁成功结果或加锁失败结果;若加锁结果为加锁成功结果,对当前事物锁进行第二判别处理,生成线程调度结果;若加锁结果为加锁失败结果,生成请求资源失败的线程调度结果。
本发明实施例中,第二生成子单元123具体还用于若待调度线程的线程等级为第一等级,判断是否存在获取时长小于或等于预设的时长阈值的第一等级的当前事务锁;若存在,生成加锁失败结果;若不存在,生成第一加锁成功结果,第一加锁成功结果为对待调度线程添加第一等级的目标事务锁;若待调度线程的线程等级为第二等级,判断是否存在获取时长小于或等于预设的时长阈值的第一等级的当前事务锁或获取时长小于或等于预设的时长阈值的第二等级的当前事务锁;若存在,生成加锁失败结果;若不存在,生成第二加锁成功结果,第二加锁成功结果为对待调度线程添加第二等级的目标事务锁。
本发明实施例中,第三生成子单元124具体用于若加锁成功结果为第一加锁成功结果,判断是否存在第二等级的当前事务锁;若存在,控制待调度线程等待,并按照预设等待时间周期记录等待次数;若等待次数大于预设等待阈值,控制待调度线程释放第一等级的目标事务锁,并生成请求资源失败的线程调度结果;若等待次数小于或等于预设等待阈值,重复执行控制待调度线程等待,并按照预设等待时间周期记录等待次数的步骤;若不存在,生成请求资源成功的线程调度结果。
本发明实施例中,第三生成子单元124还具体用于若加锁成功结果为第二加锁成功结果,判断是否存在第一等级的当前事务锁;若存在,生成请求资源失败的线程调度结果;若不存在,生成请求资源成功的线程调度结果。
本发明实施例中,该装置还包括:判断单元13和释放单元14。
判断单元13用于若线程调度结果为请求资源成功,判断是否接收到待调度线程发送的资源请求。若接收到待调度线程发送的资源请求,触发生成单元12重复执行响应于资源请求,对待调度线程的事务锁状态信息、可访问资源的当前事务锁和线程等级进行判别处理,生成线程调度结果的步骤。
释放单元14用于若未接收到待调度线程发送的资源请求,控制待调度线程释放目标事务锁。
本发明实施例的方案中,接收待调度线程发送的资源请求;响应于资源请求,对待调度线程的事务锁状态信息、可访问资源的当前事务锁和线程等级进行判别处理,生成线程调度结果,在保证同一资源的串行化使用的前提下,能够进一步保证重要的、迫切的线程优先获取到资源,且在一定时间内多次申请资源的线程能成功获取到资源,提高线程申请资源的成功率。
上述实施例阐明的系统、装置、模块或单元,具体可以由计算机芯片或实体实现,或者由具有某种功能的产品来实现。一种典型的实现设备为计算机设备,具体的,计算机设备例如可以为个人计算机、膝上型计算机、蜂窝电话、相机电话、智能电话、个人数字助理、媒体播放器、导航设备、电子邮件设备、游戏控制台、平板计算机、可穿戴设备或者这些设备中的任何设备的组合。
本发明实施例提供了一种计算机设备,包括存储器和处理器,存储器用于存储包括程序指令的信息,处理器用于控制程序指令的执行,程序指令被处理器加载并执行时实现上述基于分布式缓存的线程调度方法的实施例的各步骤,具体描述可参见上述基于分布式缓存的线程调度方法的实施例。
下面参考图4,其示出了适于用来实现本申请实施例的计算机设备600的结构示意图。
如图4所示,计算机设备600包括中央处理单元(CPU)601,其可以根据存储在只读存储器(ROM)602中的程序或者从存储部分608加载到随机访问存储器(RAM))603中的程序而执行各种适当的工作和处理。在RAM603中,还存储有计算机设备600操作所需的各种程序和数据。CPU601、ROM602、以及RAM603通过总线604彼此相连。输入/输出(I/O)接口605也连接至总线604。
以下部件连接至I/O接口605:包括键盘、鼠标等的输入部分606;包括诸如阴极射线管(CRT)、液晶反馈器(LCD)等以及扬声器等的输出部分607;包括硬盘等的存储部分608;以及包括诸如LAN卡,调制解调器等的网络接口卡的通信部分609。通信部分609经由诸如因特网的网络执行通信处理。驱动器610也根据需要连接至I/O接口606。可拆卸介质611,诸如磁盘、光盘、磁光盘、半导体存储器等等,根据需要安装在驱动器610上,以便于从其上读出的计算机程序根据需要被安装如存储部分608。
特别地,根据本发明的实施例,上文参考流程图描述的过程可以被实现为计算机软件程序。例如,本发明的实施例包括一种计算机程序产品,其包括有形地包含在机器可读介质上的计算机程序,所述计算机程序包括用于执行流程图所示的方法的程序代码。在这样的实施例中,该计算机程序可以通过通信部分609从网络上被下载和安装,和/或从可拆卸介质611被安装。
计算机可读介质包括永久性和非永久性、可移动和非可移动媒体可以由任何方法或技术来实现信息存储。信息可以是计算机可读指令、数据结构、程序的模块或其他数据。计算机的存储介质的例子包括,但不限于相变内存(PRAM)、静态随机存取存储器(SRAM)、动态随机存取存储器(DRAM)、其他类型的随机存取存储器(RAM)、只读存储器(ROM)、电可擦除可编程只读存储器(EEPROM)、快闪记忆体或其他内存技术、只读光盘只读存储器(CD-ROM)、数字多功能光盘(DVD)或其他光学存储、磁盒式磁带,磁带磁磁盘存储或其他磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的信息。按照本文中的界定,计算机可读介质不包括暂存电脑可读媒体(transitory media),如调制的数据信号和载波。
为了描述的方便,描述以上装置时以功能分为各种单元分别描述。当然,在实施本申请时可以把各单元的功能在同一个或多个软件和/或硬件中实现。
本发明是参照根据本发明实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
还需要说明的是,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、商品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、商品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、商品或者设备中还存在另外的相同要素。
本领域技术人员应明白,本申请的实施例可提供为方法、系统或计算机程序产品。因此,本申请可采用完全硬件实施例、完全软件实施例或结合软件和硬件方面的实施例的形式。而且,本申请可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本申请可以在由计算机执行的计算机可执行指令的一般上下文中描述,例如程序模块。一般地,程序模块包括执行特定任务或实现特定抽象数据类型的例程、程序、对象、组件、数据结构等等。也可以在分布式计算环境中实践本申请,在这些分布式计算环境中,由通过通信网络而被连接的远程处理设备来执行任务。在分布式计算环境中,程序模块可以位于包括存储设备在内的本地和远程计算机存储介质中。
本说明书中的各个实施例均采用递进的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于系统实施例而言,由于其基本相似于方法实施例,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
以上所述仅为本申请的实施例而已,并不用于限制本申请。对于本领域技术人员来说,本申请可以有各种更改和变化。凡在本申请的精神和原理之内所作的任何修改、等同替换、改进等,均应包含在本申请的权利要求范围之内。
Claims (7)
1.一种基于分布式缓存的线程调度方法,其特征在于,所述方法包括:
接收待调度线程发送的资源请求;
响应于所述资源请求,对所述待调度线程的事务锁状态信息、可访问资源的当前事务锁和线程等级进行判别处理,生成线程调度结果;
所述事务锁状态信息包括获取状态和获取时长,所述获取状态包括已获取或未获取;
所述对所述待调度线程的事务锁状态信息、可访问资源的当前事务锁和线程等级进行判别处理,生成线程调度结果,包括:
若所述获取状态为已获取且所述获取时长小于或等于预设的时长阈值,生成请求资源成功的线程调度结果;
若所述获取状态为已获取且所述获取时长大于预设的时长阈值,或者所述获取状态为未获取,判断是否已存在可访问资源的当前事务锁;
若已存在可访问资源的当前事务锁,对所述待调度线程的线程等级和所述当前事务锁进行判别处理,生成线程调度结果;
若不存在可访问资源的当前事务锁,对所述当前事务锁进行第二判别处理,生成线程调度结果;
所述对所述待调度线程的线程等级和所述当前事务锁进行判别处理,生成线程调度结果,包括:
根据所述待调度线程的线程等级,对所述当前事务锁进行第一判别处理,生成所述待调度线程的加锁结果,所述加锁结果包括加锁成功结果或加锁失败结果;
若所述加锁结果为加锁成功结果,对所述当前事务锁进行第二判别处理,生成线程调度结果;
若所述加锁结果为加锁失败结果,生成请求资源失败的线程调度结果;
所述线程等级包括第一等级或第二等级,所述第一等级优于所述第二等级;所述加锁成功结果包括第一加锁成功结果或第二加锁成功结果;
所述根据所述待调度线程的线程等级,对所述当前事务锁进行第一判别处理,生成所述待调度线程的加锁结果,包括:
若所述待调度线程的线程等级为第一等级,判断是否存在获取时长小于或等于预设的时长阈值的第一等级的当前事务锁;
若存在,生成加锁失败结果;
若不存在,生成第一加锁成功结果,所述第一加锁成功结果为对所述待调度线程添加第一等级的目标事务锁;
若所述待调度线程的线程等级为第二等级,判断是否存在获取时长小于或等于预设的时长阈值的第一等级的当前事务锁或获取时长小于或等于预设的时长阈值的第二等级的当前事务锁;
若存在,生成加锁失败结果;
若不存在,生成第二加锁成功结果,所述第二加锁成功结果为对所述待调度线程添加第二等级的目标事务锁。
2.根据权利要求1所述的基于分布式缓存的线程调度方法,其特征在于,
所述若所述加锁结果为加锁成功结果,对所述当前事务锁进行第二判别处理,生成线程调度结果,包括:
若所述加锁成功结果为第一加锁成功结果,判断是否存在第二等级的当前事务锁;
若存在,控制所述待调度线程等待,并按照预设等待时间周期记录等待次数;
若所述等待次数大于预设等待阈值,控制所述待调度线程释放第一等级的目标事务锁,并生成请求资源失败的线程调度结果;
若所述等待次数小于或等于预设等待阈值,重复执行所述控制所述待调度线程等待,并按照预设等待时间周期记录等待次数的步骤;
若不存在,生成请求资源成功的线程调度结果。
3.根据权利要求1所述的基于分布式缓存的线程调度方法,其特征在于,
所述若所述加锁结果为加锁成功结果,对所述当前事务锁进行第二判别处理,生成线程调度结果,包括:
若所述加锁成功结果为第二加锁成功结果,判断是否存在第一等级的当前事务锁;
若存在,生成请求资源失败的线程调度结果;
若不存在,生成请求资源成功的线程调度结果。
4.根据权利要求1所述的基于分布式缓存的线程调度方法,其特征在于,在所述响应于所述资源请求,对所述待调度线程的事务锁状态信息、可访问资源的当前事务锁和线程等级进行判别处理,生成线程调度结果之后,还包括:
若线程调度结果为请求资源成功,判断是否接收到所述待调度线程发送的资源请求;
若接收到所述待调度线程发送的资源请求,重复执行所述响应于所述资源请求,对所述待调度线程的事务锁状态信息、可访问资源的当前事务锁和线程等级进行判别处理,生成线程调度结果的步骤;
若未接收到所述待调度线程发送的资源请求,控制所述待调度线程释放目标事务锁。
5.一种基于分布式缓存的线程调度装置,其特征在于,所述装置包括:
接收单元,用于接收待调度线程发送的资源请求;
第一生成单元,用于响应于所述资源请求,对所述待调度线程的事务锁状态信息、可访问资源的当前事务锁和线程等级进行判别处理,生成线程调度结果;
所述事务锁状态信息包括获取状态和获取时长,所述获取状态包括已获取或未获取;
所述第一生成单元包括:第一生成子单元、判断子单元、第二生成子单元和第三生成子单元;
所述第一生成子单元用于若获取状态为已获取且获取时长小于或等于预设的时长阈值,生成请求资源成功的线程调度结果;
所述判断子单元用于若获取状态为已获取且获取时长大于预设的时长阈值,或者获取状态为未获取,判断是否已存在可访问资源的当前事务锁;
所述第二生成子单元用于若已存在可访问资源的当前事务锁,对待调度线程的线程等级和当前事务锁进行判别处理,生成线程调度结果;
所述第三生成子单元用于若不存在可访问资源的当前事务锁,对当前事务锁进行第二判别处理,生成线程调度结果;
所述第二生成子单元具体用于根据待调度线程的线程等级,对当前事务锁进行第一判别处理,生成待调度线程的加锁结果,加锁结果包括加锁成功结果或加锁失败结果;若加锁结果为加锁成功结果,对当前事务锁进行第二判别处理,生成线程调度结果;若加锁结果为加锁失败结果,生成请求资源失败的线程调度结果;
所述线程等级包括第一等级或第二等级,所述第一等级优于所述第二等级;所述加锁成功结果包括第一加锁成功结果或第二加锁成功结果;
所述第二生成子单元具体还用于若待调度线程的线程等级为第一等级,判断是否存在获取时长小于或等于预设的时长阈值的第一等级的当前事务锁;若存在,生成加锁失败结果;若不存在,生成第一加锁成功结果,第一加锁成功结果为对待调度线程添加第一等级的目标事务锁;若待调度线程的线程等级为第二等级,判断是否存在获取时长小于或等于预设的时长阈值的第一等级的当前事务锁或获取时长小于或等于预设的时长阈值的第二等级的当前事务锁;若存在,生成加锁失败结果;若不存在,生成第二加锁成功结果,第二加锁成功结果为对待调度线程添加第二等级的目标事务锁。
6.一种计算机可读介质,其上存储有计算机程序,其特征在于,该程序被处理器执行时实现如权利要求1至4任一项所述的基于分布式缓存的线程调度方法。
7.一种计算机设备,包括存储器和处理器,所述存储器用于存储包括程序指令的信息,所述处理器用于控制程序指令的执行,其特征在于,所述程序指令被处理器加载并执行时实现权利要求1至4任意一项所述的基于分布式缓存的线程调度方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110712379.9A CN113434272B (zh) | 2021-06-25 | 2021-06-25 | 一种基于分布式缓存的线程调度方法和装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110712379.9A CN113434272B (zh) | 2021-06-25 | 2021-06-25 | 一种基于分布式缓存的线程调度方法和装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN113434272A CN113434272A (zh) | 2021-09-24 |
CN113434272B true CN113434272B (zh) | 2024-03-22 |
Family
ID=77754548
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202110712379.9A Active CN113434272B (zh) | 2021-06-25 | 2021-06-25 | 一种基于分布式缓存的线程调度方法和装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN113434272B (zh) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117608791B (zh) * | 2023-12-01 | 2024-08-06 | 成都北中网芯科技有限公司 | 一种分裂线程调度方法及其验证方法 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107133092A (zh) * | 2017-05-24 | 2017-09-05 | 努比亚技术有限公司 | 多线程同步处理方法、终端及计算机可读存储介质 |
CN111163140A (zh) * | 2019-12-20 | 2020-05-15 | 深圳市中农易讯信息技术有限公司 | 资源获取和分配的方法、装置和计算机可读存储介质 |
CN111913809A (zh) * | 2020-07-28 | 2020-11-10 | 北京百度网讯科技有限公司 | 多线程场景下的任务执行方法、装置、设备和存储介质 |
CN112328392A (zh) * | 2020-10-27 | 2021-02-05 | 金蝶软件(中国)有限公司 | 一种数据处理方法及相关设备 |
-
2021
- 2021-06-25 CN CN202110712379.9A patent/CN113434272B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107133092A (zh) * | 2017-05-24 | 2017-09-05 | 努比亚技术有限公司 | 多线程同步处理方法、终端及计算机可读存储介质 |
CN111163140A (zh) * | 2019-12-20 | 2020-05-15 | 深圳市中农易讯信息技术有限公司 | 资源获取和分配的方法、装置和计算机可读存储介质 |
CN111913809A (zh) * | 2020-07-28 | 2020-11-10 | 北京百度网讯科技有限公司 | 多线程场景下的任务执行方法、装置、设备和存储介质 |
CN112328392A (zh) * | 2020-10-27 | 2021-02-05 | 金蝶软件(中国)有限公司 | 一种数据处理方法及相关设备 |
Also Published As
Publication number | Publication date |
---|---|
CN113434272A (zh) | 2021-09-24 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US9542229B2 (en) | Multiple core real-time task execution | |
CN106598705B (zh) | 一种异步任务的调度方法、装置、系统以及电子设备 | |
US20170228260A1 (en) | Efficient priority-aware thread scheduling | |
WO2022095815A1 (zh) | 显存管理方法、装置、设备及系统 | |
US8756613B2 (en) | Scalable, parallel processing of messages while enforcing custom sequencing criteria | |
CN108572876B (zh) | 一种读写锁的实现方法及装置 | |
US20180260255A1 (en) | Lock-free reference counting | |
CN107562685B (zh) | 一种基于延时补偿的多核处理器核心间数据交互的方法 | |
US11675622B2 (en) | Leader election with lifetime term | |
CN106569892B (zh) | 资源调度方法与设备 | |
CN113590320A (zh) | 分布式批量任务调度的资源处理方法、装置、设备及介质 | |
CN113434272B (zh) | 一种基于分布式缓存的线程调度方法和装置 | |
CN116225728B (zh) | 基于协程的任务执行方法、装置、存储介质及电子设备 | |
EP4177745A1 (en) | Resource scheduling method, electronic device, and storage medium | |
CN107797848A (zh) | 进程调度方法、装置和主机设备 | |
EP3571583B1 (en) | System and method to reduce overhead of reference counting | |
CN116501267A (zh) | 一种独立冗余磁盘阵列卡控制方法和装置 | |
CN111597035A (zh) | 基于多线程的仿真引擎时间推进方法及系统 | |
CN110471651B (zh) | 一种基于c++实现控制反转的方法及服务端 | |
CN111338803A (zh) | 一种线程处理方法和装置 | |
EP3268886A1 (en) | Lock manager | |
CN115951844B (zh) | 分布式文件系统的文件锁管理方法、设备及介质 | |
CN115858667A (zh) | 用于同步数据的方法、装置、设备和存储介质 | |
CN106997304B (zh) | 输入输出事件的处理方法及设备 | |
CN113961536A (zh) | 一种存储装置中动态计算md5值的方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |