CN114138728A - 一种修改共享文件内容的方法、装置、设备、存储介质 - Google Patents
一种修改共享文件内容的方法、装置、设备、存储介质 Download PDFInfo
- Publication number
- CN114138728A CN114138728A CN202111265647.3A CN202111265647A CN114138728A CN 114138728 A CN114138728 A CN 114138728A CN 202111265647 A CN202111265647 A CN 202111265647A CN 114138728 A CN114138728 A CN 114138728A
- Authority
- CN
- China
- Prior art keywords
- file
- thread
- processing
- modified
- backup
- 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.)
- Pending
Links
- 238000000034 method Methods 0.000 title claims abstract description 49
- 238000012545 processing Methods 0.000 claims abstract description 101
- 238000012986 modification Methods 0.000 claims description 31
- 230000004048 modification Effects 0.000 claims description 31
- 238000004891 communication Methods 0.000 description 3
- 238000006467 substitution reaction Methods 0.000 description 3
- 238000010586 diagram Methods 0.000 description 2
- 230000009286 beneficial effect Effects 0.000 description 1
- 238000012217 deletion Methods 0.000 description 1
- 230000037430 deletion Effects 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 238000012546 transfer Methods 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
-
- 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/16—File or folder operations, e.g. details of user interfaces specifically adapted to file systems
-
- 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
-
- 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/172—Caching, prefetching or hoarding of files
-
- 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
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Data Mining & Analysis (AREA)
- Databases & Information Systems (AREA)
- Software Systems (AREA)
- Human Computer Interaction (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明提供一种修改共享文件内容的方法、装置、设备、存储介质,所述包括如下步骤:接收客户端发送的文件访问请求;其中访问请求包括目标文件名和文件锁定命令;根据访问请求预锁定目标文件,并将预锁定的目标文件进行备份;其中备份文件的个数为第一时间到达线程的个数与第二时间到达的线程的个数的最大值N加1;运行线程对预锁定的目标文件和N个备份文件进行加锁每个线程独占一个文件进行操作得到各自的处理文件;对得到的各处理文件查找不同生成补丁文件;根据生成的补丁文件更新第N+1个备份文件生成修改完成的共享文件。在文件被锁定后,其他线程仍能访问该文件,增加了文件资源的使用率。
Description
技术领域
本发明涉及共享文件修改技术领域,具体涉及一种修改共享文件内容的方法、装置、设备、存储介质。
背景技术
文件锁定是多用户、多任务操作系统中一个个非常重要的组成部分,程序经常需要共享数据,而这通常是通过文件来实现的。当一个程序正在对文件进行写操作时,文件就会进入一个暂时的状态,在这个状态下,如果另外一个程序尝试读这个文件,他就会自动停下来等待这个状态的结束。
Linux程序以原子操作的方式建立锁文件,在创建锁时,系统将不允许任何其他的方式发生,这就给程序提供了一种方式来确保它所创建的文件是唯一的,而且这个文件不可能被其他的程序在同一时刻创建。
假设有两个线程对共享文件A进行修改(写操作),按照现有的内容,先到线程a是对文件A进行加锁,独占该文件的写权限,第二个b线程处于等待中,等第一个线程a独占文件完毕后,进行解锁,释放资源后,第二个线程b对共享文件A进行加锁,再独占该文件的写权限,等待第二个线程b独占文件完毕后,进行解锁,释放资源后。任务完成,假如第一个线程完成任务运行5s中,第二个线程b完成任务也需要5s中,完成两个线程的任务,需要10s左右。文件资源利用率低。
发明内容
针对当一个线程正在对文件进行写操作时,文件会进入一个暂时的状态,在这个状态下,如果另外一个进程尝试读这个文件时需要等待这个状态的结束导致文件资源利用率低的问题,本发明提供一种修改共享文件内容的方法、装置、设备、存储介质以解决线程独占文件并锁定后,仍能被其他线程锁定并使用。
本发明的技术方案是:
第一方面,本发明技术方案提供一种修改共享文件内容的方法,定义最先到达为第一时间到达,第一时间到达的线程开始运行后到达为第二时间到达;所述包括如下步骤:
接收客户端发送的文件访问请求;其中访问请求包括目标文件名和文件锁定命令;
根据访问请求预锁定目标文件,并将预锁定的目标文件进行备份;其中备份文件的个数为第一时间到达线程的个数与第二时间到达的线程的个数的最大值N加1;
运行线程对预锁定的目标文件和N个备份文件进行加锁每个线程独占一个文件进行操作得到各自的处理文件;
对得到的各处理文件查找不同生成补丁文件;
根据生成的补丁文件更新第N+1个备份文件生成修改完成的共享文件。
在文件系统某个路径下设置一片区域,用于存储共享文件的备份文件。
优选地,根据生成的补丁文件更新第N+1个备份文件生成修改完成共享文件的步骤之后还包括:
将备份的N+1个本分文件删除。
由于安全的原因,本申请将共享文件的备份拷贝进内存中。在内存里设置一片区域用于存储共享文件的备份。生成修改完成的共享文件后需要把备份文件占用的内存资源释放掉。
优选地,根据访问请求预锁定目标文件,并将预锁定的目标文件进行备份的步骤中,线程a运行期间线程b到达或线程a和线程b同时到达,线程a预锁定目标文件,生成的备份文件为文件I和文件II;
该方法包括:
运行线程a对预锁定的目标文件进行加锁独占目标文件进行修改操作生成处理文件a;
运行线程b对备份文件I进行加锁独占备份文件I进行修改操作生成处理文件b;
查找处理文件a和处理文件b的不同生成补丁文件;
根据补丁文件更新文件II生成修改完成的共享文件。
线程独占文件进行修改操作完成后,进行解锁,释放资源。
优选地,定义根据处理文件a和处理文件b的不同生成补丁文件更新文件II生成修改完成的共享文件为第一修改文件;该方法还包括:
线程b运行期间线程c到达,通过一等待队列缓存该线程c;
线程a和b运行完成后,运行线程c对第一修改文件进行加锁独占第一修改文件进行修改操作生成修改完成的共享文件。
优选地,定义根据处理文件a和处理文件b的不同生成补丁文件更新文件II生成修改完成的共享文件为第一修改文件;该方法还包括:
线程b运行期间线程c和线程d先后或同时到达,通过一等待队列缓存线程c和线程d;
线程a和b运行完成后,线程c和线程d对第一修改文件按照线程a和线程b处理目标文件的方式进行处理,后续线程的处理方式以此类推。具体步骤包括:
线程c预锁定第一修改文件,并将预锁定第一修改文件进行备份生成的第一修改备份文件I和第一修改备份文件II;
运行线程c对预锁定的第一修改文件进行加锁独占第一修改文件进行修改操作生成处理文件c;
运行线程d对第一修改备份文件I进行加锁独占第一修改备份文件I进行修改操作生成处理文件d;
查找处理文件c和处理文件d的不同生成补丁文件;
根据补丁文件更新第一修改备份文件II生成修改完成的共享文件。
优选地,线程a预锁定目标文件,生成的备份文件为文件I和文件II;该方法还包括:
运行线程a对预锁定的目标文件进行加锁独占目标文件进行修改操作生成处理文件a;
线程a运行期间线程b和线程c同时到达,线程b预锁定文件I,线程c预锁定文件II,并将预锁定文件I进行备份生成的文件III;
运行线程b对预锁定的文件I进行加锁独占文件I进行修改操作生成处理文件Ia;
运行线程c对预锁定的文件II进行加锁独占文件II进行修改操作生成处理文件Ic;
查找处理文件a、处理文件Ia的不同生成补丁文件;根据补丁文件更新文件III生成修改完成的共享文件I;
查找处理文件a、处理文件Ic的不同生成补丁文件;根据补丁文件更新文件III生成修改完成的共享文件II;
查找共享文件I、共享文件II的不同生成补丁文件;根据补丁文件更新文件III生成修改完成的共享文件。
第二方面,本发明技术方案提供一种修改共享文件内容的装置,定义最先到达为第一时间到达,第一时间到达的线程开始运行后到达为第二时间到达;所述装置包括接收模块、文件备份模块、执行处理模块、差异处理模块和更新模块;
接收模块,用于接收客户端发送的文件访问请求;其中访问请求包括目标文件名和文件锁定命令;
文件备份模块,用于根据访问请求预锁定目标文件,并将预锁定的目标文件进行备份;其中备份文件的个数为第一时间到达线程的个数与第二时间到达的线程的个数的最大值N加1;
执行处理模块,用于运行线程对预锁定的目标文件和N个备份文件进行加锁每个线程独占一个文件进行操作得到各自的处理文件;
差异处理模块,用于对得到的各处理文件查找不同生成补丁文件;
更新模块,用于根据生成的补丁文件更新第N+1个备份文件生成修改完成的共享文件。
优选地,该装置还包括删除模块,用于更新模块处理完成后将备份的N+1个本分文件删除。
第三方面,本发明技术方案还提供一种计算机设备,包括处理器和存储器,所述处理器和所述存储器通过总线完成相互间的通信;所述存储器存储有可被所述处理器执行的程序指令,所述处理器调用所述程序指令能够执行如第一方面所述的修改共享文件内容的方法。
第四方面,本发明技术方案还提供一种非暂态计算机可读存储介质,所述非暂态计算机可读存储介质存储计算机指令,所述计算机指令使所述计算机执行如第一方面所述的修改共享文件内容的方法。
从以上技术方案可以看出,本发明具有以下优点:对文件进行加锁限制了文件被其他线程使用,增加文件的拷贝,使拷贝的文件被其他线程锁定被使用,通过查找不同根据找出的不同更新源文件。在文件被锁定后,其他线程仍能访问该文件,增加了文件资源的使用率。
此外,本发明设计原理可靠,结构简单,具有非常广泛的应用前景。
由此可见,本发明与现有技术相比,具有突出的实质性特点和显著地进步,其实施的有益效果也是显而易见的。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,对于本领域普通技术人员而言,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是本发明一个实施例的方法的示意性流程图。
图2是本发明一个实施例的装置的示意性框图。
具体实施方式
为了使本技术领域的人员更好地理解本发明中的技术方案,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都应当属于本发明保护的范围。
如图1所示,本发明实施例1提供一种修改共享文件内容的方法,定义最先到达为第一时间到达,第一时间到达的线程开始运行后到达为第二时间到达;所述包括如下步骤:
步骤1:接收客户端发送的文件访问请求;其中访问请求包括目标文件名和文件锁定命令;
步骤2:根据访问请求预锁定目标文件,并将预锁定的目标文件进行备份;其中备份文件的个数为第一时间到达线程的个数与第二时间到达的线程的个数的最大值N加1;
步骤3:运行线程对预锁定的目标文件和N个备份文件进行加锁每个线程独占一个文件进行操作得到各自的处理文件;
步骤4:对得到的各处理文件查找不同生成补丁文件;
步骤5:根据生成的补丁文件更新第N+1个备份文件生成修改完成的共享文件。
在有些是实力中,步骤5根据生成的补丁文件更新第N+1个备份文件生成修改完成共享文件的步骤之后还包括:
步骤6:将备份的N+1个本分文件删除。在文件系统某个路径下设置一片区域,用于存储共享文件的备份文件。
由于安全的原因,本申请将共享文件的备份拷贝进内存中。在内存里设置一片区域用于存储共享文件的备份。生成修改完成的共享文件后需要把备份文件占用的内存资源释放掉。
本发明实施例2提供一种修改共享文件内容的方法,线程a运行期间线程b到达或线程a和线程b同时到达,线程a预锁定目标文件,生成的备份文件为文件I和文件II;该方法与实施例1的不同之处包括:
运行线程a对预锁定的目标文件进行加锁独占目标文件进行修改操作生成处理文件a;
运行线程b对备份文件I进行加锁独占备份文件I进行修改操作生成处理文件b;
查找处理文件a和处理文件b的不同生成补丁文件;
根据补丁文件更新文件II生成修改完成的共享文件。
在文件系统某个路径下设置一片区域,用于存储共享文件在这里定义为目标文件A的2个备份文件I和文件II;其中文件I为第二个线程占用的文件,文件II用于保存原始文件,在线程执行任务前,拷贝A到指定文件区域,先到线程a对文件A进行加锁,独占该文件的写权限,第二个线程b后到,发现A已加锁,立即对A的备份文件I进行加锁,独占该文件的写权限,线程b对A的备份文件I加的锁叫预定锁。假设在线程a运行的5s内,线程b也在修改着文件。等线程a运行完毕,进行解锁,释放资源后,等待线程b执行完成。线程b写完成后,进行解锁,释放资源。现在有两个处理后的文件,处理文件a和处理文件b,本实施例中查找文件的不同,使用命令diff ab>diff.log,diff.log生成的差异文件,在这里也叫补丁文件,现在只需要对文件的不同进行正确处理,即可得到修改后的文件A+。
如果线程a没有修改,线程b也没有修改,则不在diff.log内容里;以原始文件为准;
如果线程a做修改,线程b没有修改,在diff.log内容里,此时以+号标记的原始文件为准,也就是,+号表示比较的文件的后者比前者多一行,-号表示比较的文件的后者比前者少一行;
如果线程a没做修改,线程b做修改,在diff.log内容里,此时以-号标记文件为准;
如果线程a做修改,线程b做修改,在diff.log内容里,此时以-号标记文件为准;也就是后执行完成的线程的处理文件为准。
结合以上四个判断和原始文件,可以得到修改后的共享文件。综上,完成两个线程的任务,少于10s。
线程独占文件进行修改操作完成后,进行解锁,释放资源。
本发明实施例3提供一种修改共享文件内容的方法,定义实施例2中的根据处理文件a和处理文件b的不同生成补丁文件更新文件II生成修改完成的共享文件为第一修改文件;该方法还包括:
线程b运行期间线程c到达,通过一等待队列缓存该线程c;
线程a和b运行完成后,运行线程c对第一修改文件进行加锁独占第一修改文件进行修改操作生成修改完成的共享文件。
三个线程对目标文件的快速修改,假设线程有为线程a、线程b、线程c,先到者为线程a、线程b,后到者为线程c(线程c等待),此时处理方式为先由线程a、线程b处理完后得到第一修改文件,然后在第一修改文件的基础上,线程c对文件第一修改文件进行加锁,独占该文件的写权限得到修改后的共享文件。
本发明实施例4提供一种修改共享文件内容的方法,定义实施例2中的根据处理文件a和处理文件b的不同生成补丁文件更新文件II生成修改完成的共享文件为第一修改文件;该方法还包括:
线程b运行期间线程c和线程d先后或同时到达,通过一等待队列缓存线程c和线程d;
线程a和b运行完成后,线程c和线程d对第一修改文件按照线程a和线程b处理目标文件的方式进行处理,后续线程的处理方式以此类推。具体步骤包括:
线程c预锁定第一修改文件,并将预锁定第一修改文件进行备份生成的第一修改备份文件I和第一修改备份文件II;
运行线程c对预锁定的第一修改文件进行加锁独占第一修改文件进行修改操作生成处理文件c;
运行线程d对第一修改备份文件I进行加锁独占第一修改备份文件I进行修改操作生成处理文件d;
查找处理文件c和处理文件d的不同生成补丁文件;
根据补丁文件更新第一修改备份文件II生成修改完成的共享文件。
四个线程对共享文件的快速修改,假设线程有为线程a、线程b、线程c、线程d,先到者为线程a、线程b,后到者为线程c和线程d,此时处理方式为先由线程a、线程b处理完后得到第一修改备份文件,然后在第一修改备份文件的基础上,线程c、线程d对文件第一修改备份文件进行加锁,按照线程a和线程b处理目标文件得到第一修改备份文件的方式得到修改完成的共享文件。依次类推。
本发明实施例5提供一种修改共享文件内容的方法,线程a预锁定目标文件,生成的备份文件为文件I和文件II;该方法还包括:
运行线程a对预锁定的目标文件进行加锁独占目标文件进行修改操作生成处理文件a;
线程a运行期间线程b和线程c同时到达,线程b预锁定文件I,线程c预锁定文件II,并将预锁定文件I进行备份生成的文件III;
运行线程b对预锁定的文件I进行加锁独占文件I进行修改操作生成处理文件Ia;
运行线程c对预锁定的文件II进行加锁独占文件II进行修改操作生成处理文件Ic;
查找处理文件a、处理文件Ia的不同生成补丁文件;根据补丁文件更新文件III生成修改完成的共享文件I;
查找处理文件a、处理文件Ic的不同生成补丁文件;根据补丁文件更新文件III生成修改完成的共享文件II;
查找共享文件I、共享文件II的不同生成补丁文件;根据补丁文件更新文件III生成修改完成的共享文件。
本实施例中存在三线程以上,有线程同时到,比如线程a先到,线程b和线程c同时到,此时需要增加目标文件的拷贝数。
如图2所示,本发明技术方案提供一种修改共享文件内容的装置,定义最先到达为第一时间到达,第一时间到达的线程开始运行后到达为第二时间到达;所述装置包括接收模块、文件备份模块、执行处理模块、差异处理模块和更新模块;
接收模块,用于接收客户端发送的文件访问请求;其中访问请求包括目标文件名和文件锁定命令;
文件备份模块,用于根据访问请求预锁定目标文件,并将预锁定的目标文件进行备份;其中备份文件的个数为第一时间到达线程的个数与第二时间到达的线程的个数的最大值N加1;
执行处理模块,用于运行线程对预锁定的目标文件和N个备份文件进行加锁每个线程独占一个文件进行操作得到各自的处理文件;
差异处理模块,用于对得到的各处理文件查找不同生成补丁文件;
更新模块,用于根据生成的补丁文件更新第N+1个备份文件生成修改完成的共享文件。
该装置还包括删除模块,用于更新模块处理完成后将备份的N+1个本分文件删除。
本发明实施例提供的一种计算机设备,该设备可以包括:处理器、通信接口、存储器和总线,其中,处理器,通信接口,存储器通过总线完成相互间的通信。总线可以用于电子设备与传感器之间的信息传输。处理器可以调用存储器中的逻辑指令,以执行如下方法:步骤1:接收客户端发送的文件访问请求;其中访问请求包括目标文件名和文件锁定命令;步骤2:根据访问请求预锁定目标文件,并将预锁定的目标文件进行备份;其中备份文件的个数为第一时间到达线程的个数与第二时间到达的线程的个数的最大值N加1;步骤3:运行线程对预锁定的目标文件和N个备份文件进行加锁每个线程独占一个文件进行操作得到各自的处理文件;步骤4:对得到的各处理文件查找不同生成补丁文件;步骤5:根据生成的补丁文件更新第N+1个备份文件生成修改完成的共享文件。
此外,上述的存储器中的逻辑指令可以通过软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、磁碟或者光盘等各种可以存储程序代码的介质。
本发明实施例提供一种非暂态计算机可读存储介质,该非暂态计算机可读存储介质存储计算机指令,该计算机指令使计算机执行上述方法实施例所提供的方法,例如包括:步骤1:接收客户端发送的文件访问请求;其中访问请求包括目标文件名和文件锁定命令;步骤2:根据访问请求预锁定目标文件,并将预锁定的目标文件进行备份;其中备份文件的个数为第一时间到达线程的个数与第二时间到达的线程的个数的最大值N加1;步骤3:运行线程对预锁定的目标文件和N个备份文件进行加锁每个线程独占一个文件进行操作得到各自的处理文件;步骤4:对得到的各处理文件查找不同生成补丁文件;步骤5:根据生成的补丁文件更新第N+1个备份文件生成修改完成的共享文件;步骤6:将备份的N+1个本分文件删除。
在一些具体的实施例中,所述可读存储介质中被处理器执行的程序指令,具体可以实现以下步骤:线程b运行期间线程c到达,通过一等待队列缓存该线程c;线程a和b运行完成后,运行线程c对第一修改文件进行加锁独占第一修改文件进行修改操作生成修改完成的共享文件。
在一些具体的实施例中,所述可读存储介质中被处理器执行的程序指令,具体可以实现以下步骤:运行线程a对预锁定的目标文件进行加锁独占目标文件进行修改操作生成处理文件a;线程a运行期间线程b和线程c同时到达,线程b预锁定文件I,线程c预锁定文件II,并将预锁定文件I进行备份生成的文件III;运行线程b对预锁定的文件I进行加锁独占文件I进行修改操作生成处理文件Ia;运行线程c对预锁定的文件II进行加锁独占文件II进行修改操作生成处理文件Ic;查找处理文件a、处理文件Ia的不同生成补丁文件;根据补丁文件更新文件III生成修改完成的共享文件I;查找处理文件a、处理文件Ic的不同生成补丁文件;根据补丁文件更新文件III生成修改完成的共享文件II;查找共享文件I、共享文件II的不同生成补丁文件;根据补丁文件更新文件III生成修改完成的共享文件。
尽管通过参考附图并结合优选实施例的方式对本发明进行了详细描述,但本发明并不限于此。在不脱离本发明的精神和实质的前提下,本领域普通技术人员可以对本发明的实施例进行各种等效的修改或替换,而这些修改或替换都应在本发明的涵盖范围内/任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应以所述权利要求的保护范围为准。
Claims (10)
1.一种修改共享文件内容的方法,其特征在于,定义最先到达为第一时间到达,第一时间到达的线程开始运行后到达为第二时间到达;所述包括如下步骤:
接收客户端发送的文件访问请求;其中访问请求包括目标文件名和文件锁定命令;
根据访问请求预锁定目标文件,并将预锁定的目标文件进行备份;其中备份文件的个数为第一时间到达线程的个数与第二时间到达的线程的个数的最大值N加1;
运行线程对预锁定的目标文件和N个备份文件进行加锁每个线程独占一个文件进行操作得到各自的处理文件;
对得到的各处理文件查找不同生成补丁文件;
根据生成的补丁文件更新第N+1个备份文件生成修改完成的共享文件。
2.根据权利要求1所述的修改共享文件内容的方法,其特征在于,根据生成的补丁文件更新第N+1个备份文件生成修改完成共享文件的步骤之后还包括:
将备份的N+1个本分文件删除。
3.根据权利要求1所述的修改共享文件内容的方法,其特征在于,根据访问请求预锁定目标文件,并将预锁定的目标文件进行备份的步骤中,线程a运行期间线程b到达或线程a和线程b同时到达,线程a预锁定目标文件,生成的备份文件为文件I和文件II;
该方法包括:
运行线程a对预锁定的目标文件进行加锁独占目标文件进行修改操作生成处理文件a;
运行线程b对备份文件I进行加锁独占备份文件I进行修改操作生成处理文件b;
查找处理文件a和处理文件b的不同生成补丁文件;
根据补丁文件更新文件II生成修改完成的共享文件。
4.根据权利要求3所述的修改共享文件内容的方法,其特征在于,定义根据处理文件a和处理文件b的不同生成补丁文件更新文件II生成修改完成的共享文件为第一修改文件;该方法还包括:
线程b运行期间线程c到达,通过一等待队列缓存该线程c;
线程a和b运行完成后,运行线程c对第一修改文件进行加锁独占第一修改文件进行修改操作生成修改完成的共享文件。
5.根据权利要求3所述的修改共享文件内容的方法,其特征在于,定义根据处理文件a和处理文件b的不同生成补丁文件更新文件II生成修改完成的共享文件为第一修改文件;该方法还包括:
线程b运行期间线程c和线程d先后或同时到达,通过一等待队列缓存线程c和线程d;
线程a和b运行完成后,线程c预锁定第一修改文件,并将预锁定第一修改文件进行备份生成的第一修改备份文件I和第一修改备份文件II;
运行线程c对预锁定的第一修改文件进行加锁独占第一修改文件进行修改操作生成处理文件c;
运行线程d对第一修改备份文件I进行加锁独占第一修改备份文件I进行修改操作生成处理文件d;
查找处理文件c和处理文件d的不同生成补丁文件;
根据补丁文件更新第一修改备份文件II生成修改完成的共享文件。
6.根据权利要求1所述的修改共享文件内容的方法,其特征在于,线程a预锁定目标文件,生成的备份文件为文件I和文件II;该方法还包括:
运行线程a对预锁定的目标文件进行加锁独占目标文件进行修改操作生成处理文件a;
线程a运行期间线程b和线程c同时到达,线程b预锁定文件I,线程c预锁定文件II,并将预锁定文件I进行备份生成的文件III;
运行线程b对预锁定的文件I进行加锁独占文件I进行修改操作生成处理文件Ia;
运行线程c对预锁定的文件II进行加锁独占文件II进行修改操作生成处理文件Ic;
查找处理文件a、处理文件Ia的不同生成补丁文件;根据补丁文件更新文件III生成修改完成的共享文件I;
查找处理文件a、处理文件Ic的不同生成补丁文件;根据补丁文件更新文件III生成修改完成的共享文件II;
查找共享文件I、共享文件II的不同生成补丁文件;根据补丁文件更新文件III生成修改完成的共享文件。
7.一种修改共享文件内容的装置,其特征在于,定义最先到达为第一时间到达,第一时间到达的线程开始运行后到达为第二时间到达;所述装置包括接收模块、文件备份模块、执行处理模块、差异处理模块和更新模块;
接收模块,用于接收客户端发送的文件访问请求;其中访问请求包括目标文件名和文件锁定命令;
文件备份模块,用于根据访问请求预锁定目标文件,并将预锁定的目标文件进行备份;其中备份文件的个数为第一时间到达线程的个数与第二时间到达的线程的个数的最大值N加1;
执行处理模块,用于运行线程对预锁定的目标文件和N个备份文件进行加锁每个线程独占一个文件进行操作得到各自的处理文件;
差异处理模块,用于对得到的各处理文件查找不同生成补丁文件;
更新模块,用于根据生成的补丁文件更新第N+1个备份文件生成修改完成的共享文件。
8.根据权利要求7所述的修改共享文件内容的装置,其特征在于,该装置还包括删除模块,用于更新模块处理完成后将备份的N+1个本分文件删除。
9.一种计算机设备,其特征在于,包括处理器和存储器,所述处理器和所述存储器通过总线完成相互间的通信;所述存储器存储有可被所述处理器执行的程序指令,所述处理器调用所述程序指令能够执行如权利要求1至6任一项权利要求所述的修改共享文件内容的方法。
10.一种非暂态计算机可读存储介质,其特征在于,所述非暂态计算机可读存储介质存储计算机指令,所述计算机指令使所述计算机执行如权利要求1至6任一项权利要求所述的修改共享文件内容的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111265647.3A CN114138728A (zh) | 2021-10-28 | 2021-10-28 | 一种修改共享文件内容的方法、装置、设备、存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111265647.3A CN114138728A (zh) | 2021-10-28 | 2021-10-28 | 一种修改共享文件内容的方法、装置、设备、存储介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN114138728A true CN114138728A (zh) | 2022-03-04 |
Family
ID=80395759
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202111265647.3A Pending CN114138728A (zh) | 2021-10-28 | 2021-10-28 | 一种修改共享文件内容的方法、装置、设备、存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN114138728A (zh) |
-
2021
- 2021-10-28 CN CN202111265647.3A patent/CN114138728A/zh active Pending
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10585874B2 (en) | Locking concurrent commands in a database management system | |
US9747086B2 (en) | Transmission point pattern extraction from executable code in message passing environments | |
US6473806B1 (en) | Methods and apparatus for managing objects and processes in a distributed object operating environment | |
US20040230972A1 (en) | Management of locks in a virtual machine environment | |
US9213562B2 (en) | Garbage collection safepoint system using non-blocking asynchronous I/O call to copy data when the garbage collection safepoint is not in progress or is completed | |
CN105700939A (zh) | 一种分布式系统中多线程同步的方法和系统 | |
JP2004326753A (ja) | 仮想計算機環境におけるロックの管理 | |
CN111198872B (zh) | 数据库处理事务的方法及装置 | |
US8495642B2 (en) | Mechanism for priority inheritance for read/write locks | |
CN118132286A (zh) | 用于多进程之间通信的方法、设备及系统 | |
US20230401241A1 (en) | System for lightweight objects | |
JP2004252986A (ja) | 複製コマンド配布のシステムおよび方法 | |
CN112148480A (zh) | 基于多线程的任务处理方法、装置、设备及存储介质 | |
CN106033422A (zh) | 一种数据库操作控制方法、装置及系统 | |
US6976260B1 (en) | Method and apparatus for serializing a message queue in a multiprocessing environment | |
WO2022242372A1 (zh) | 对象处理方法、装置、计算机设备和存储介质 | |
WO2024188050A1 (zh) | 分布式文件系统的文件锁管理方法、设备及介质 | |
CN112241398A (zh) | 一种数据迁移方法和系统 | |
US10515066B2 (en) | Atomic updates of versioned data structures | |
CN110377614B (zh) | 一种分布式环境下的订单处理锁系统 | |
CN114138728A (zh) | 一种修改共享文件内容的方法、装置、设备、存储介质 | |
CN110019057B (zh) | 请求处理方法及装置 | |
US9009731B2 (en) | Conversion of lightweight object to a heavyweight object | |
US9418175B2 (en) | Enumeration of a concurrent data structure | |
US20050198005A1 (en) | Systems and methods for controlling access to an object |
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 |