CN110908968B - 一种文件锁解锁时避免惊群的方法、装置、设备及存储介质 - Google Patents
一种文件锁解锁时避免惊群的方法、装置、设备及存储介质 Download PDFInfo
- Publication number
- CN110908968B CN110908968B CN201911113966.5A CN201911113966A CN110908968B CN 110908968 B CN110908968 B CN 110908968B CN 201911113966 A CN201911113966 A CN 201911113966A CN 110908968 B CN110908968 B CN 110908968B
- Authority
- CN
- China
- Prior art keywords
- locked
- lock
- target
- file
- request
- 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 59
- 230000002618 waking effect Effects 0.000 claims abstract description 16
- 238000004590 computer program Methods 0.000 claims description 11
- 230000009286 beneficial effect Effects 0.000 description 4
- 238000010586 diagram Methods 0.000 description 4
- 230000008569 process Effects 0.000 description 4
- 230000007717 exclusion Effects 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 230000000694 effects Effects 0.000 description 1
- 230000006870 function Effects 0.000 description 1
- 230000000977 initiatory effect Effects 0.000 description 1
- 230000000750 progressive effect Effects 0.000 description 1
- 239000002699 waste material Substances 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/10—File systems; File servers
- G06F16/17—Details of further file system functions
- G06F16/176—Support for shared access to files; File sharing support
- G06F16/1767—Concurrency control, e.g. optimistic or pessimistic approaches
- G06F16/1774—Locking methods, e.g. locking methods for file systems allowing shared and concurrent access to files
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/10—File systems; File servers
- G06F16/18—File system types
- G06F16/182—Distributed file systems
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Data Mining & Analysis (AREA)
- Databases & Information Systems (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为本发明实施例提供的一种文件锁解锁时避免惊群的设备的结构图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
本发明实施例的核心是提供一种文件锁解锁时避免惊群的方法,在文件锁解锁的过程中,在能够实现避免惊群的基础上,提高处理任务请求的效率;本发明的另一核心是提供一种文件锁解锁时避免惊群的装置、设备及计算机可读存储介质,均具有上述有益效果。
为了使本领域技术人员更好地理解本发明方案,下面结合附图和具体实施方式对本发明作进一步的详细说明。
图1为本发明实施例提供的一种文件锁解锁时避免惊群的方法的流程图。如图1所示,一种文件锁解锁时避免惊群的方法包括:
S10:当上一任务请求对目标文件解锁时,判断目标文件上是否还存在文件锁;若不存在,则进入S20;
S20:检查等待队列中的目标待加锁请求的属性。
可以理解的是,在上一任务请求在对目标文件加锁的过程中,当存在新的待加锁请求需要对目标文件进行加锁操作时,将根据发起待加锁请求的时间先后顺序形成等待队列。当上一任务请求接收到解锁命令,对目标文件解锁时,可能有两种情况:一种是当前该目标文件上的文件锁全部解锁;另一种是当前该目标文件上仍有文件锁。本实施例是在当前该目标文件上不存在文件锁的情况下,检查等待队列中的目标待加锁请求的属性。
其中,目标待加锁请求可以是等待队列中的任意一个待加锁请求,例如可以是等待队列中的首个待加锁请求,即最先发起的待加锁请求,或者也可以是等待队列中的末尾的待加锁请求,即最近时间发起的待加锁请求,本实施例对此不做限定。
需要说明的是,目标待加锁请求属性对应的是文件锁的属性,指的是该目标待加锁请求需要对目标文件执行的加锁的类型,如加读锁或者加写锁;即,根据目标待加锁请求的属性不同,将对应执行不同的操作。
S30:若属性为写锁,则只唤醒目标待加锁请求,使目标待加锁请求对目标文件进行加写锁操作;
S40:若属性为读锁,则唤醒等待队列中所有属性为读锁的待加锁请求,使各读锁的待加锁请求对目标文件进行加读锁操作。
具体的,当目标待加锁请求的属性为写锁,只唤醒目标待加锁请求,即,仅让目标待加锁请求执行对目标文件加锁的操作,且具体为加写锁的操作。可以理解的是,唤醒目标待加锁请求,会使得目标待加锁请求成功获得写锁,同时由于锁互斥特性,由于目标文件加了写锁,后续的待加锁请求即使被唤醒,也是无法成功获取到文件锁,无法对目标文件执行任何加锁操作,所以此时不需要再唤醒等待队列中的其他待加锁请求。
具体的,当目标待加锁请求的属性为读锁,则唤醒等待队列中所有属性为读锁的待加锁请求,即,让等待队列中的所有的属性为读锁的待加锁请求均对目标文件执行加读锁的操作。可以理解的是,根据锁(读)共享特性,一个任务在某个文件上加了读锁时,其他请求任务可以再对此文件加读锁,形成共享读,但是无法再加写锁。因此,可以同时唤醒等待队列中的所有读锁的待加锁请求,让这些属性为读锁的待加锁请求同时对目标文件加读锁。但是,无需唤醒等待队列中的加写锁的待加锁请求,加写锁的待加锁请求无法获取到写锁。
本发明实施例提供了一种文件锁解锁时避免惊群的方法,包括:当上一任务请求对目标文件解锁时,判断目标文件上是否还存在文件锁;若不存在,则检查等待队列中的目标待加锁请求的属性;若属性为写锁,则只唤醒目标待加锁请求,使目标待加锁请求对目标文件进行加写锁操作;若属性为读锁,则唤醒等待队列中所有属性为读锁的待加锁请求,使各读锁的待加锁请求对目标文件进行加读锁操作。也就是说,在目标文件上不存在文件锁时,针对性地唤醒等待队列中能够进行加锁操作的待加锁请求,进而避免唤醒其他大量不能进行加锁操作的待加锁请求;并且本方法能够使多个属性为读锁的待加锁请求同时进行加锁操作,因此,本方法能够在实现避免惊群的基础上,提高处理任务请求的效率。
作为优选的实施方式,在本实施例中,还包括:
若存在,则进入唤醒等待队列中所有属性为读锁的待加锁请求,使各读锁的待加锁请求对目标文件进行加读锁操作的步骤。
也就是说,当上一任务请求接收到解锁命令,对目标文件解锁时,当前该目标文件上仍有文件锁,根据锁共享特性和锁互斥特性,此时该目标文件上存在的仍是属性为读锁的文件锁。因此,在本实施例中,在判断出目标文件上还存在文件锁时,则进入唤醒等待队列中所有属性为读锁的待加锁请求,使各读锁的待加锁请求对目标文件进行加读锁操作的步骤。
可以理解的是,由于读锁请求可以依据读共享特性对目标文件同时加锁,因此本实施例能够进一步提高处理等待队列中的待加锁请求的效率。
在上述实施例的基础上,本实施例对技术方案作了进一步的说明和优化,具体的,本实施例中,目标待加锁请求为等待队列中的首个待加锁请求。
具体的,本实施例在上一任务请求对目标文件解锁时,优选地将等待队列中的首个待加锁请求作为目标待加锁请求,检查该目标待加锁请求的属性,然后针对该目标待加锁请求的属性执行对应的操作。
例如,当等待队列中的各待加锁请求依次为:写锁的待加锁请求A、读锁的待加锁请求B、写锁的待加锁请求C、读锁的待加锁请求D、读锁的待加锁请求E。在上一任务请求对目标文件解锁时,轮到当前等待队列中的首个待加锁请求,待加锁请求A对目标文件解锁;并在待加锁请求A对目标文件解锁时,此时读锁的待加锁请求B为当前等待队列中的首个待加锁请求,在唤醒待加锁请求B时,将同时唤醒等待队列中同样属性为读锁的待加锁请求D和待加锁请求E;在这几个待加锁请求解锁之后,当前等待队列中的首个待加锁请求为待加锁请求C,依次类推,实现对等待队列中的各待加锁请求进行处理。
需要说明的是,由于等待队列为根据待加锁请求的时间先后顺序排列形成的,也就是说,等待队列中的首个待加锁请求是最先发起的待加锁请求。通过优先对等待队列中的首个待加锁请求进行处理,能够相对避免待加锁请求的等待时间过长。
在上述实施例的基础上,本实施例对技术方案作了进一步的说明和优化,具体的,本实施例中,在当上一任务请求对目标文件解锁时,判断目标文件上是否还存在文件锁之前,进一步包括:
获取等待队列中属性为写锁的待加锁请求的第一数量;
若第一数量大于预设数量阈值,则在目标文件上不存在文件锁时,进入只唤醒目标待加锁请求,使目标待加锁请求对目标文件进行加写锁操作的步骤。
具体的,在本实施例中,是在上一任务请求对目标文件解锁之前,先检查等待队列中各待加锁请求的属性,并累计属性为写锁的待加锁请求的第一数量;并将该第一数量与预设数量阈值进行比较,若该第一数量大于预设数量阈值,表示检测出等待队列中的属性为写锁的待加锁请求的数量多到一定程度,因此为了先满足大多数属性为写锁的待加锁请求需求,相对减少等待队列中属性为写锁的待加锁请求的整体等待时间,本实施例优选的在目标文件上不存在文件锁时,进入只唤醒目标待加锁请求,使目标待加锁请求对目标文件进行加写锁操作的步骤。
可见,本实施例的方法,能够相对减少等待队列中属性为写锁的待加锁请求的整体等待时间,进一步提升用户的使用体验。
作为优选的实施方式,在当上一任务请求对目标文件解锁时,判断目标文件上是否还存在文件锁之前,进一步包括:
获取等待队列中属性为读锁的待加锁请求的第二数量;
若属性第一数量与第二数量的比值大于预设比值阈值,则在目标文件上不存在文件锁时,进入只唤醒目标待加锁请求,使目标待加锁请求对目标文件进行加写锁操作的步骤。
具体的,在本实施例中,是在上一任务请求对目标文件解锁之前,先检查等待队列中各待加锁请求的属性,并分别累计属性为写锁和属性为读锁的待加锁请求的数量,分别得到第一数量和第二数量;然后计算第一数量和第二数量的比值,并将该比值与预设比值阈值进行比较;若该比值大于预设比值阈值,表示当前等待队列中的待加锁请求中,写锁的待加锁请求的数量明显大于读锁的待加锁请求的数量,因此为了先满足大多数待加锁请求的需求,相对减少等待队列中属性为写锁的待加锁请求的整体等待时间,本实施例优选的在目标文件上不存在文件锁时,进入只唤醒目标待加锁请求,使目标待加锁请求对目标文件进行加写锁操作的步骤。
可见,本实施例的方法,能够相对减少等待队列中属性为写锁的待加锁请求的整体等待时间,进一步提升用户的使用体验。
在上述实施例的基础上,本实施例对技术方案作了进一步的说明和优化,具体的,本实施例中,在当上一任务请求对目标文件解锁,判断目标文件上是否还存在文件锁之前,进一步包括:
获取等待队列中各属性为写锁的待加锁请求的等待时间;
将等待时间大于预设等待阈值的待加锁请求设置为目标待加锁请求。
在本实施例中,是在上一任务请求对目标文件解锁之前,先检查等待队列中各待加锁请求的属性,并获取各属性为写锁的待加锁请求的等待时间;然后将各等待时间与预设等待阈值进行比较;确定出等待时间大于预设等待阈值的属性为写锁的待加锁请求;然后将该等待时间大于预设等待阈值的待加锁请求设置为目标待加锁请求。需要说明的是,在实际操作中,若存在多个等待时间大于预设等待时间阈值的属性为写锁的待加锁请求,则可以按照预设规则依次将这些待加锁请求设置为目标待加锁请求;例如可以随机确定设置顺序,也可以按照各待加锁请求在等待队列中的位置设置顺序,本实施例对此不做限定。
因此,当目标文件上不存在文件锁时,便可以依据该目标待加锁请求的写锁的属性,只唤醒该目标待加锁请求,使目标待加锁请求对目标文件进行加写锁操作;以便能够尽快地处理该目标待加锁请求。
可见,本实施例的方法,能够相对减少等待队列中属性为写锁的待加锁请求的整体等待时间,相对提高处理属性为写锁的待加锁请求的效率,进一步提升用户的使用体验。
在上述实施例的基础上,本实施例对技术方案作了进一步的说明和优化,具体的,本实施例中,在当上一任务请求对目标文件解锁时,判断目标文件上是否还存在文件锁之前,进一步包括:
获取等待队列中的各待加锁请求的优先级;
将优先级大于预设优先级阈值的待加锁请求设置为目标待加锁请求。
具体的,本实施例中,预先为各待加锁请求设置优先级,也就是说,各待加锁请求均有其对应的优先级;然后,在上一任务请求对目标文件解锁之前,先检查等待队列中各待加锁请求的优先级,并将各待加锁请求的优先级与预设优先级阈值进行比较;当存在优先级大于预设优先级阈值的待加锁请求时,则将该待加锁请求设置为目标待加锁请求。
在实际操作中,若当前等待队列中存在多个优先级大于预设优先级阈值的待加锁请求,则可以按照预设规则依次将这些待加锁请求设置为目标待加锁请求;例如可以随机确定设置顺序,也可以按照各待加锁请求在等待队列中的位置设置顺序,本实施例对此不做限定。
可以理解的是,在确定出目标待加锁请求之后,再进入检查目标待加锁请求的属性的步骤,从而根据目标待加锁请求的属性执行相应的操作。因此,本实施例通过进一步考虑到各待加锁请求的优先级,优先处理优先级高的待加锁请求,能够进一步提高用户的使用体验。
上文对于本发明提供的一种文件锁解锁时避免惊群的方法的实施例进行了详细的描述,本发明还提供了一种与该方法对应的文件锁解锁时避免惊群的装置、设备及计算机可读存储介质,由于装置、设备及计算机可读存储介质部分的实施例与方法部分的实施例相互照应,因此装置、设备及计算机可读存储介质部分的实施例请参见方法部分的实施例的描述,这里暂不赘述。
图2为本发明实施例提供的一种文件锁解锁时避免惊群的装置的结构图,如图2所示,一种文件锁解锁时避免惊群的装置包括:
判断模块21,用于当上一任务请求对目标文件解锁时,判断目标文件上是否还存在文件锁;若不存在,则调用检查模块22;
检查模块22,用于检查等待队列中的目标待加锁请求的属性;
第一执行模块23,用于若属性为写锁,则只唤醒目标待加锁请求,使目标待加锁请求对目标文件进行加写锁操作;
第二执行模块24,用于若属性为读锁,则唤醒等待队列中所有属性为读锁的待加锁请求,使各读锁的待加锁请求对目标文件进行加读锁操作。
本发明实施例提供文件锁解锁时避免惊群的装置,具有上述文件锁解锁时避免惊群的方法的有益效果。
作为优选的实施方式,进一步包括:
第一获取模块,用于获取等待队列中属性为写锁的待加锁请求的第一数量;
第三执行模块,用于若第一数量大于预设数量阈值,则在目标文件上不存在文件锁时,进入只唤醒目标待加锁请求,使目标待加锁请求对目标文件进行加写锁操作的步骤。
作为优选的实施方式,进一步包括:
第二获取模块,用于获取等待队列中属性为读锁的待加锁请求的第二数量;
第四执行模块,用于若属性第一数量与第二数量的比值大于预设比值阈值,则在目标文件上不存在文件锁时,进入只唤醒目标待加锁请求,使目标待加锁请求对目标文件进行加写锁操作的步骤。
作为优选的实施方式,进一步包括:
第三获取模块,用于获取等待队列中各属性为写锁的待加锁请求的等待时间;
第五执行模块,用于将等待时间大于预设等待阈值的待加锁请求设置为目标待加锁请求。
作为优选的实施方式,进一步包括:
第四获取模块,用于获取等待队列中的各待加锁请求的优先级;
第六执行模块,用于将优先级大于预设优先级阈值的待加锁请求设置为目标待加锁请求。
图3为本发明实施例提供的一种文件锁解锁时避免惊群的设备的结构图,如图3所示,一种文件锁解锁时避免惊群的设备包括:
存储器31,用于存储计算机程序;
处理器32,用于执行计算机程序时实现如上述文件锁解锁时避免惊群的方法的步骤。
本发明实施例提供的文件锁解锁时避免惊群的设备,具有上述文件锁解锁时避免惊群的方法的有益效果。
为解决上述技术问题,本发明还提供一种计算机可读存储介质,计算机可读存储介质上存储有计算机程序,计算机程序被处理器执行时实现如上述文件锁解锁时避免惊群的方法的步骤。
本发明实施例提供的计算机可读存储介质,具有上述文件锁解锁时避免惊群的方法的有益效果。
以上对本发明所提供的文件锁解锁时避免惊群的方法、装置、设备及计算机可读存储介质进行了详细介绍。本文中应用了具体实施例对本发明的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本发明的方法及其核心思想。应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以对本发明进行若干改进和修饰,这些改进和修饰也落入本发明权利要求的保护范围内。
说明书中各个实施例采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似部分互相参见即可。对于实施例公开的装置而言,由于其与实施例公开的方法相对应,所以描述的比较简单,相关之处参见方法部分说明即可。
专业人员还可以进一步意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、计算机软件或者二者的结合来实现,为了清楚地说明硬件和软件的可互换性,在上述说明中已经按照功能一般性地描述了各示例的组成及步骤。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本发明的范围。
Claims (9)
1.一种文件锁解锁时避免惊群的方法,其特征在于,包括:
当上一任务请求对目标文件解锁时,判断所述目标文件上是否还存在文件锁;
若不存在,则检查等待队列中的目标待加锁请求的属性;
若所述属性为写锁,则只唤醒所述目标待加锁请求,使所述目标待加锁请求对所述目标文件进行加写锁操作;
若所述属性为读锁,则唤醒所述等待队列中所有属性为读锁的待加锁请求,使各所述读锁的待加锁请求对所述目标文件进行加读锁操作;
若存在,则进入所述唤醒所述等待队列中所有属性为读锁的待加锁请求,使各所述读锁的待加锁请求对所述目标文件进行加读锁操作的步骤。
2.根据权利要求1所述的方法,其特征在于,在所述当上一任务请求对目标文件解锁时,判断所述目标文件上是否还存在文件锁之前,进一步包括:
获取所述等待队列中属性为写锁的待加锁请求的第一数量;
若所述第一数量大于预设数量阈值,则在所述目标文件上不存在所述文件锁时,进入所述只唤醒所述目标待加锁请求,使所述目标待加锁请求对所述目标文件进行加写锁操作的步骤。
3.根据权利要求2所述的方法,其特征在于,在所述当上一任务请求对目标文件解锁时,判断所述目标文件上是否还存在文件锁之前,进一步包括:
获取所述等待队列中属性为读锁的待加锁请求的第二数量;
若属性第一数量与所述第二数量的比值大于预设比值阈值,则在所述目标文件上不存在所述文件锁时,进入所述只唤醒所述目标待加锁请求,使所述目标待加锁请求对所述目标文件进行加写锁操作的步骤。
4.根据权利要求1所述的方法,其特征在于,在所述当上一任务请求对目标文件解锁,判断所述目标文件上是否还存在文件锁之前,进一步包括:
获取所述等待队列中各属性为写锁的待加锁请求的等待时间;
将所述等待时间大于预设等待阈值的待加锁请求设置为所述目标待加锁请求。
5.根据权利要求1所述的方法,其特征在于,在所述当上一任务请求对目标文件解锁时,判断所述目标文件上是否还存在文件锁之前,进一步包括:
获取所述等待队列中的各待加锁请求的优先级;
将优先级大于预设优先级阈值的待加锁请求设置为所述目标待加锁请求。
6.根据权利要求1所述的方法,其特征在于,所述目标待加锁请求为所述等待队列中的首个待加锁请求。
7.一种文件锁解锁时避免惊群的装置,其特征在于,包括:
判断模块,用于当上一任务请求对目标文件解锁时,判断所述目标文件上是否还存在文件锁;若不存在,则调用检查模块;若存在,则唤醒等待队列中所有属性为读锁的待加锁请求,使各所述读锁的待加锁请求对所述目标文件进行加读锁操作;
所述检查模块,用于检查所述等待队列中的目标待加锁请求的属性;
第一执行模块,用于若所述属性为写锁,则只唤醒所述目标待加锁请求,使所述目标待加锁请求对所述目标文件进行加写锁操作;
第二执行模块,用于若所述属性为读锁,则唤醒所述等待队列中所有属性为读锁的待加锁请求,使各所述读锁的待加锁请求对所述目标文件进行加读锁操作。
8.一种文件锁解锁时避免惊群的设备,其特征在于,包括:
存储器,用于存储计算机程序;
处理器,用于执行所述计算机程序时实现如权利要求1至6任一项所述的文件锁解锁时避免惊群的方法的步骤。
9.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质上存储有计算机程序,所述计算机程序被处理器执行时实现如权利要求1至6任一项所述的文件锁解锁时避免惊群的方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201911113966.5A CN110908968B (zh) | 2019-11-14 | 2019-11-14 | 一种文件锁解锁时避免惊群的方法、装置、设备及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201911113966.5A CN110908968B (zh) | 2019-11-14 | 2019-11-14 | 一种文件锁解锁时避免惊群的方法、装置、设备及存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN110908968A CN110908968A (zh) | 2020-03-24 |
CN110908968B true CN110908968B (zh) | 2022-05-27 |
Family
ID=69816721
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201911113966.5A Active CN110908968B (zh) | 2019-11-14 | 2019-11-14 | 一种文件锁解锁时避免惊群的方法、装置、设备及存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN110908968B (zh) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111984379B (zh) * | 2020-07-14 | 2023-04-07 | 上海金仕达软件科技股份有限公司 | 读写事务控制方法、系统、终端设备及存储介质 |
CN114327691A (zh) * | 2021-12-10 | 2022-04-12 | 北京五八信息技术有限公司 | 应用程序处理方法、装置、设备及存储介质 |
Citations (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101404744A (zh) * | 2008-11-07 | 2009-04-08 | 深圳创维数字技术股份有限公司 | 数字电视接收机及其对录制文件进行锁控制的方法和装置 |
CN103514298A (zh) * | 2013-10-16 | 2014-01-15 | 浪潮(北京)电子信息产业有限公司 | 一种实现文件锁的方法及元数据服务器 |
CN105224251A (zh) * | 2015-09-28 | 2016-01-06 | 浪潮(北京)电子信息产业有限公司 | 一种基于Linux的读写锁优化方法和系统 |
CN105224255A (zh) * | 2015-10-14 | 2016-01-06 | 浪潮(北京)电子信息产业有限公司 | 一种存储文件管理方法及装置 |
CN106951488A (zh) * | 2017-03-14 | 2017-07-14 | 海尔优家智能科技(北京)有限公司 | 一种日志记录方法和装置 |
CN107562915A (zh) * | 2017-09-12 | 2018-01-09 | 郑州云海信息技术有限公司 | 读取小文件的方法、装置和设备及计算机可读存储介质 |
CN107807858A (zh) * | 2017-10-30 | 2018-03-16 | 北京神州绿盟信息安全科技股份有限公司 | 一种读写锁操作方法及系统、设备 |
CN108572876A (zh) * | 2018-03-07 | 2018-09-25 | 北京神州绿盟信息安全科技股份有限公司 | 一种读写锁的实现方法及装置 |
CN109033359A (zh) * | 2018-07-26 | 2018-12-18 | 北京天地和兴科技有限公司 | 一种多进程安全访问sqlite的方法 |
CN109407987A (zh) * | 2018-10-18 | 2019-03-01 | 北京奇艺世纪科技有限公司 | 一种数据读取方法及装置 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7246119B2 (en) * | 2002-03-08 | 2007-07-17 | Kabushiki Kaisha Toshiba | Method and implementation of session-based file locking for network applications |
-
2019
- 2019-11-14 CN CN201911113966.5A patent/CN110908968B/zh active Active
Patent Citations (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101404744A (zh) * | 2008-11-07 | 2009-04-08 | 深圳创维数字技术股份有限公司 | 数字电视接收机及其对录制文件进行锁控制的方法和装置 |
CN103514298A (zh) * | 2013-10-16 | 2014-01-15 | 浪潮(北京)电子信息产业有限公司 | 一种实现文件锁的方法及元数据服务器 |
CN105224251A (zh) * | 2015-09-28 | 2016-01-06 | 浪潮(北京)电子信息产业有限公司 | 一种基于Linux的读写锁优化方法和系统 |
CN105224255A (zh) * | 2015-10-14 | 2016-01-06 | 浪潮(北京)电子信息产业有限公司 | 一种存储文件管理方法及装置 |
CN106951488A (zh) * | 2017-03-14 | 2017-07-14 | 海尔优家智能科技(北京)有限公司 | 一种日志记录方法和装置 |
CN107562915A (zh) * | 2017-09-12 | 2018-01-09 | 郑州云海信息技术有限公司 | 读取小文件的方法、装置和设备及计算机可读存储介质 |
CN107807858A (zh) * | 2017-10-30 | 2018-03-16 | 北京神州绿盟信息安全科技股份有限公司 | 一种读写锁操作方法及系统、设备 |
CN108572876A (zh) * | 2018-03-07 | 2018-09-25 | 北京神州绿盟信息安全科技股份有限公司 | 一种读写锁的实现方法及装置 |
CN109033359A (zh) * | 2018-07-26 | 2018-12-18 | 北京天地和兴科技有限公司 | 一种多进程安全访问sqlite的方法 |
CN109407987A (zh) * | 2018-10-18 | 2019-03-01 | 北京奇艺世纪科技有限公司 | 一种数据读取方法及装置 |
Non-Patent Citations (1)
Title |
---|
庞飞."分布式网络丝互斥锁的设计与实现".《万方数据知识服务平台》.2005, * |
Also Published As
Publication number | Publication date |
---|---|
CN110908968A (zh) | 2020-03-24 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
EP3278239B1 (en) | Processing database transactions in a distributed computing system | |
CN108572876B (zh) | 一种读写锁的实现方法及装置 | |
CN110908968B (zh) | 一种文件锁解锁时避免惊群的方法、装置、设备及存储介质 | |
KR20180069815A (ko) | 충돌들의 존재시 효율적인 작업 스케줄링을 위한 방법 | |
US8769546B2 (en) | Busy-wait time for threads | |
CN112099962B (zh) | 分布式锁实现方法、装置和电子设备 | |
CN103699437A (zh) | 一种资源调度方法及设备 | |
CN112416556B (zh) | 一种数据读写优先平衡方法、系统、装置及存储介质 | |
CN111737020A (zh) | 分布式集群的并发处理方法及装置 | |
CN112148480A (zh) | 基于多线程的任务处理方法、装置、设备及存储介质 | |
CN109766317B (zh) | 一种文件的删除方法、装置、设备及存储介质 | |
CN109542922B (zh) | 针对实时服务数据的处理方法及相关系统 | |
CN115658153A (zh) | 睡眠锁优化方法、装置、电子设备及存储介质 | |
CN115687378A (zh) | Ddl任务的并行处理方法、计算节点、及电子设备 | |
CN115934272A (zh) | 一种联机批量任务处理方法及装置 | |
US20050198005A1 (en) | Systems and methods for controlling access to an object | |
CN111261206B (zh) | 一种读写方法、装置和电子设备及可读存储介质 | |
CN113961364A (zh) | 一种大规模锁系统实现方法、装置、存储介质和服务器 | |
WO2017063507A1 (zh) | Scsi命令的并发处理方法及装置 | |
CN117707798A (zh) | 多线程并发状态下的死锁消除方法、装置、设备及介质 | |
CN113448710B (zh) | 基于业务资源的分布式应用系统 | |
CN111158590B (zh) | 一种解决哈希冲突的方法和设备 | |
CN111949407B (zh) | 一种资源分配方法及装置 | |
CN113312661B (zh) | 用户授权系统、方法、装置及电子设备 | |
CN114461410A (zh) | 分布式锁的实现方法、装置、电子设备及存储介质 |
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 |