CN111414337A - 一种文件读取方法、装置、计算设备及存储介质 - Google Patents
一种文件读取方法、装置、计算设备及存储介质 Download PDFInfo
- Publication number
- CN111414337A CN111414337A CN201910016494.5A CN201910016494A CN111414337A CN 111414337 A CN111414337 A CN 111414337A CN 201910016494 A CN201910016494 A CN 201910016494A CN 111414337 A CN111414337 A CN 111414337A
- Authority
- CN
- China
- Prior art keywords
- file
- target
- storage path
- read
- reading
- 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.)
- Granted
Links
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/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/44—Arrangements for executing specific programs
- G06F9/448—Execution paradigms, e.g. implementations of programming paradigms
- G06F9/4482—Procedural
- G06F9/4484—Executing subprograms
- G06F9/4486—Formation of subprogram jump address
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Data Mining & Analysis (AREA)
- Databases & Information Systems (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明实施例提供一种文件读取方法、装置、计算设备及存储介质,其中,文件读取方法应用于多线程的任一线程,该文件读取方法包括:获取目标文件的目标存储路径信息;在预定状态信息中,根据所述目标存储路径信息确定所述目标文件的读取状态,所述预定状态信息记录有预定读取状态的文件的存储路径信息;若所述目标文件的读取状态为未读取,根据所述目标存储路径信息读取目标文件,并调整所述预定状态信息的记录。本发明实施例可降低多线程重复读取目标文件的概率,提升文件读取效率。
Description
技术领域
本发明实施例涉及数据处理技术领域,具体涉及一种文件读取方法、装置、计算设备及存储介质。
背景技术
文件是信息的集合,包括但不限于文本文档、图片、程序等;一般情况下,计算设备在处理文件时,需要先读取文件,再对读取的文件进行处理,因此提升文件的读取效率具有重要意义。此处所指的计算设备例如,终端设备、服务器等具有数据处理能力的电子设备。
在读取多文件时,使用多线程并发读取多文件,可以提升文件读取效率;但由于多文件的文件数量较大,如何在多线程并发读取多文件时,降低文件重复读取的情况,成为了进一步提升文件读取效率的难题。
发明内容
有鉴于此,本发明实施例提供一种文件读取方法、装置、计算设备及存储介质,以降低文件重复读取的情况,提升文件读取效率。
为解决上述问题,本发明实施例提供如下技术方案:
一种文件读取方法,所述文件读取方法应用于多线程的任一线程;所述文件读取方法包括:
获取目标文件的目标存储路径信息;
在预定状态信息中,根据所述目标存储路径信息确定所述目标文件的读取状态;所述预定状态信息记录有预定读取状态的文件的存储路径信息;
若所述目标文件的读取状态为未读取,根据所述目标存储路径信息读取目标文件,并调整所述预定状态信息的记录。
本发明实施例还提供一种文件读取装置,所述文件读取装置应用于多线程的任一线程;所述文件读取装置包括:
目标存储路径信息获取模块,用于获取目标文件的目标存储路径信息;
读取状态确定模块,用于在预定状态信息中,根据所述目标存储路径信息确定所述目标文件的读取状态;所述预定状态信息记录有预定读取状态的文件的存储路径信息;
读取执行模块,用于若所述目标文件的读取状态为未读取,根据所述目标存储路径信息读取目标文件,并调整所述预定状态信息的记录。
本发明实施例还提供一种计算设备,包括:至少一个存储器和至少一个处理器;所述存储器存储有程序,所述处理器调用所述程序,以实现上述所述的文件读取方法的步骤。
本发明实施例还提供一种存储介质,所述存储介质存储有实现上述所述的文件读取方法的程序。
本发明实施例提供的文件读取方法,可在任一线程读取目标文件的过程中,在预定状态信息中,根据所述目标存储路径信息确定所述目标文件的读取状态,其中,预定状态信息记录有预定读取状态的文件的存储路径信息;从而在目标文件的读取状态为未读取时,可根据所述目标存储路径信息读取目标文件,并调整所述预定状态信息的记录,实现文件读取。本发明实施例可在任一线程读取目标文件时,通过预定状态信息检测目标文件的读取状态,从而仅对未读取的目标文件进行读取,进而可降低多线程重复读取目标文件的概率,提升文件读取效率。
附图说明
为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据提供的附图获得其他的附图。
图1为读取文件的示例图;
图2为本发明实施例提供的文件读取方法的流程图;
图3为本发明实施例提供的文件读取方法的另一流程图;
图4为本发明实施例提供的文件处理方法的流程图;
图5为本发明实施例提供的分类符与线程分支的对应示例图;
图6为本发明实施例提供的文件处理方法的另一流程图;
图7为本发明实施例提供的线程分支与同步锁的对应示例图;
图8为本发明实施例提供的线程分支添加同步锁的示例图;
图9为本发明实施例提供的文件读取装置的结构框图;
图10为本发明实施例提供的文件读取装置的另一结构框图;
图11为本发明实施例提供的文件读取装置的再一结构框图;
图12为本发明实施例提供的文件读取装置的又一结构框图;
图13为本发明实施例提供的文件读取装置的又另一结构框图;
图14为本发明实施例提供的计算设备的硬件架构图。
具体实施方式
在一种可选示例中,多线程并发读取多文件可以是在多线程并发处理多文件的一个过程;例如,在文件处理任务对应需处理多份文件时,可使用多线程并发处理多文件来提升文件处理效率,由于每一线程在处理文件时,需要先读取文件,因此可使用到多线程并发读取多文件。当然,本发明实施例也可支持在其他场景下,使用多线程并发读取多文件,例如仅读取多文件而不作进一步处理。上述所指的并发表示利用多线程可以同时处理或读取多份文件。
在一种读取文件的可选示例中,读取文件可以是将硬盘中的文件的内容读取到内存;以存储路径信息为绝对路径为例,如图1所示,映射文件可以记录多份文件在硬盘的绝对路径,在读取文件时,可从映射文件解析出文件的绝对路径,从而根据文件的绝对路径从硬盘中查找文件,并将查找到的文件的内容读取到内存中,从而实现文件读取;可选的,映射文件可记录在内存中。可选的,存储路径信息可以是存储路径,也可以是指示存储路径的标识。
图1所示是计算设备读取本地文件的一种示例,本发明实施例也可适用于计算设备从其他设备读取文件的情况,实现跨设备读取文件;其他设备可以如网络服务器或终端设备;例如,可确定文件在其他设备的存储路径信息(如文件在其他设备上的绝对路径),根据文件在其他设备的存储路径信息,从其他设备将对应的文件的内容读取到计算设备的内存。
由于多文件的数量较大,如果不合理的设置文件读取方式,那么在使用多线程并发读取多文件时,仍可能存在不同线程重复读取同一文件的情况;因此在使用多线程并发读取多文件时,文件读取效率仍有待进一步提升。
基于此,本发明实施例提供一种文件读取方法、装置、计算设备及存储介质,以在使用多线程并发读取多文件时,降低文件重复读取的情况,提升文件读取效率。下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
作为本发明实施例公开内容的一种可选实现,本发明实施例可设置已读取完毕状态信息(如可命名为Analyzed列表),所述已读取完毕状态信息可记录已读取完毕的文件的存储路径信息;并设置正在读取状态信息(如可命名为Analyzing列表),所述正在读取状态信息可记录读取中文件(即正在读取的文件)的存储路径信息。可选的,可设置已读取完毕状态信息和正在读取状态信息被多线程共享,如已读取完毕状态信息和正在读取状态信息可设置为所有线程的共享资源,任一线程均可读写已读取完毕状态信息和正在读取状态信息。
可选的,已读取完毕状态信息和正在读取状态信息可以使用列表形式进行表示,示例的,已读取完毕状态信息可以是已读取完毕状态列表,正在读取状态信息可以是正在读取状态列表;
可选的,在多线程并发读取多文件的过程中,多线程的任一线程可基于图2所示方法实现文件读取,以提升文件读取效率;图2示出了本发明实施例提供的文件读取方法的一可选流程,该方法可由计算设备的多线程中的任一线程执行,即图2所示方法可应用于多线程的任一线程;参照图2,该方法可以包括:
步骤S10、获取目标文件的目标存储路径信息。
可选的,目标文件可以是任一线程当前需读取的文件;本发明实施例可设定需读取的多份文件,对于任一线程,目标文件可以是该多份文件中,线程当前需读取的文件;
示例的,在执行文件处理任务的场景下,该多份文件可以是文件处理任务对应需处理的文件;对应的,对于任一线程,目标文件可以是该多份文件中,线程当前需处理的文件。
在本发明实施例中,目标文件的存储路径信息可称为目标存储路径信息;一文件的存储路径信息例可以使用该文件的绝对路径表示,当然,一文件的存储路径信息可以是该文件的存储路径本身(例如该文件的绝对路径),也可以是指示该文件的存储路径的标识。
作为一种可选实现,本发明实施例可通过映射文件记录各文件在硬盘的存储路径信息;在使用多线程并发读取多文件时,任一线程可遍历映射文件记录的各文件的存储路径信息(即任一线程可一次访问映射文件记录的一份文件的存储路径信息,直至访问完映射文件记录的所有文件的存储路径信息);在任一线程遍历映射文件的过程中,任一线程在映射文件中任一次访问的文件的存储路径信息可以确定为,所述目标文件的目标存储路径信息。可选的,映射文件可缓存到内存中。
步骤S11、检测已读取完毕状态信息是否记录所述目标存储路径信息,若否,执行步骤S12,若是,执行步骤S15。
可选的,已读取完毕状态信息可以记录已读取文件的存储路径信息;任一线程获取目标存储路径信息后,可检测所述目标存储路径信息是否在已读取完毕状态信息中记录;若检测结果为否,则说明所述目标文件还未已读取,此时存在两种情况:其他线程正读取目标文件(即目标文件处于读取中),或目标文件未读取;若检测结果为是,则说明所述目标文件已读取,本发明实施例可结束读取目标文件。
步骤S12、检测正在读取状态信息是否记录所述目标存储路径信息,若否,执行步骤S13,若是,执行步骤S15。
可选的,正在读取状态信息可以记录读取中文件的存储路径信息;在本发明实施例中,若检测到已读取完毕状态信息未记录目标存储路径信息,可进一步检测正在读取状态信息是否记录目标存储路径信息;若检测结果为是,则说明其他线程可能正读取目标文件,可结束读取目标文件;若检测结果为否,则说明目标文件未读取。
步骤S13、根据所述目标存储路径信息读取目标文件,将所述目标存储路径信息添加至正在读取状态信息。
正在读取状态信息未记录所述目标存储路径信息,则说明目标文件未读取;在本发明实施例中,线程可根据所述目标存储路径信息读取目标文件(此处所指线程可以是执行本发明实施例提供的文件读取方法的任一线程),并在正在读取状态信息中添加所述目标存储路径信息,以避免线程在读取目标文件的过程中,其他线程重复读取目标文件。
可选的,线程根据所述目标存储路径信息读取目标文件可以认为是,线程根据所述目标存储路径信息从硬盘中查找目标文件,将查找到的目标文件的内容读取到内存。
步骤S14、在成功读取所述目标文件后,从正在读取状态信息中移除所述目标存储路径信息,并在已读取完毕状态信息中添加所述目标存储路径信息。
在目标文件读取成功后,线程可从正在读取状态信息中移除目标存储路径信息,并在已读取完毕状态信息中添加目标存储路径信息,以避免其他线程重复读取目标文件。
步骤S15、结束读取目标文件。
进一步,在步骤S13读取目标文件的过程中,如果由于目标文件的内容损坏等原因,导致目标文件无法正常读取,则目标存储路径信息不会添加至已读取完毕状态信息;在目标文件无法正常读取时,本发明实施例可进一步在正在读取状态信息中指示目标存储路径信息对应的异常状态;当然,本发明实施例也可单独设置异常列表,由异常列表记录无法正常读取的文件对应的存储路径信息。
进一步,在步骤S13读取目标文件后,可通过已读取完毕状态信息是否记录目标存储路径信息,来判断目标文件是否读取成功;如果已读取完毕状态信息记录有目标存储路径信息,则说明目标文件不存在内容损坏等问题,此时目标文件读取成功;如果已读取完毕状态信息未记录目标存储路径信息,则说明目标文件存在内容损坏等问题,在读取目标文件的过程中并无法成功读取目标文件。
本发明实施例提供的文件读取方法,可由多线程的任一线程执行,在任一线程读取目标文件时,线程可获取目标文件的目标存储路径信息;若线程检测已读取完毕状态信息未记录所述目标存储路径信息,则线程可进一步检测正在读取状态信息是否记录所述目标存储路径信息,其中,已读取完毕状态信息记录有已读取完毕的文件的存储路径信息,正在读取状态信息记录有读取中文件的存储路径信息;
从而,若线程进一步检测到正在读取状态信息未记录所述目标存储路径信息,则线程可根据所述目标存储路径信息读取目标文件,并将所述目标存储路径信息添加至正在读取状态信息;进而,在线程成功读取所述目标文件后,线程可从正在读取状态信息中移除所述目标存储路径信息,并在已读取完毕状态信息中添加所述目标存储路径信息。
可以看出,本发明实施例可在任一线程读取目标文件的过程中,通过已读取完毕状态信息检测目标文件是否已读取完毕,并在目标文件未已读取时,进一步通过正在读取状态信息检测目标文件是否处于读取中;从而在通过已读取完毕状态信息检测目标文件未已读取,且通过正在读取状态信息检测目标文件未处于读取中时,才读取目标文件,实现减少多线程重复读取目标文件的概率。并且,本发明实施例可在读取目标文件时,将目标文件的目标存储路径信息添加至正在读取状态信息;在成功读取目标文件后,将目标文件的目标存储路径信息从正在读取状态信息中移除,并在已读取完毕状态信息中添加所述目标存储路径信息,进一步减少多线程重复读取目标文件的概率。
作为一种替代实现,本发明实施例也可单独使用已读取完毕状态信息或正在读取状态信息。
可选的,在单独使用已读取完毕状态信息的情况下,多线程中的任一线程在读取目标文件时,可获取目标文件的目标存储路径信息;检测已读取完毕状态信息是否记录所述目标存储路径信息;若检测结果为是,则结束读取目标文件;若检测结果为否,则可根据所述目标存储路径信息读取目标文件,并在成功读取所述目标文件后,在已读取完毕状态信息中添加所述目标存储路径信息。在单独使用已读取完毕状态信息的情况下,本发明实施例也可在多线程读取多文件时,降低线程重复读取已读取文件的概率,提升文件读取效率。
可选的,在单独使用正在读取状态信息的情况下,多线程中的任一线程在读取目标文件时,可获取目标文件的目标存储路径信息;检测正在读取状态信息是否记录所述目标存储路径信息;若检测结果为是,则结束读取目标文件;若检测结果为否,则可根据所述目标存储路径信息读取目标文件,并将所述目标存储路径信息添加至正在读取状态信息;从而在成功读取所述目标文件后,从正在读取状态信息中移除所述目标存储路径信息。在单独使用正在读取状态信息的情况下,本发明实施例也可在多线程读取多文件时,降低任一线程重复读取其他线程正读取的文件的情况,降低文件重复读取的概率,提升文件读取效率。
可以看出,在本发明实施例中,文件的读取状态可以分为:已读取完毕,正在读取和未读取等;进一步的,读取完毕和正在读取可以认为是已读的两种状态,即已读可以认为是已读取完毕和正在读取中;进一步,文件的读取状态还可以包括:未成功读取等(如由于文件损坏等原因,无法成功读取文件)。任一线程在执行文件读取方法时,可仅对未读取状态的文件进行读取操作。
本发明实施例可设置预定状态信息,预定状态信息可以记录预定读取状态的文件的存储路径信息;可选的,预定状态信息可以是列表形式,示例的,预定状态信息可以是预定状态列表。
可选的,图3示出了本发明实施例提供的文件读取方法的另一可选流程,图3所示方法可由计算设备的多线程中的任一线程执行;参照图3,该方法可以包括:
步骤S20、获取目标文件的目标存储路径信息。
可选的,步骤S20可以参照图2所示步骤S10对应的描述,此处不再赘述。
步骤S21、在预定状态信息中,根据所述目标存储路径信息确定所述目标文件的读取状态;所述预定状态信息记录有预定读取状态的文件的存储路径信息。
可选的,一方面,预定状态信息可以是已读状态信息(如已读状态列表),已读状态信息可以记录有已读文件的存储路径信息,即预定读取状态可以是已读;
更进一步的,已读可以包括:已读取完毕和正在读取中;可选的,已读状态信息可以包括:已读取完毕状态信息,和正在读取状态信息;所述已读取完毕状态信息记录有已读取完毕的文件的存储路径信息,所述正在读取状态信息记录有正在读取的文件的存储路径信息。
可选的,另一方面,预定状态信息可以是未读状态信息(如未读状态列表),未读状态信息可以记录有未读取文件的存储路径信息,即预定读取状态可以是未读。
步骤S22、若所述目标文件的读取状态为未读取,根据所述目标存储路径信息读取目标文件,并调整所述预定状态信息的记录。
在确定目标文件的读取状态为未读取时,本发明实施例可根据所述目标存储路径信息读取目标文件,并调整所述预定状态信息的记录。
作为一种可选实现,预定状态信息可以包括:已读状态信息;所述已读状态信息记录有已读文件的存储路径信息;
从而,本发明实施例可检测所述已读状态信息是否记录有所述目标存储路径信息;若所述已读状态信息未记录有所述目标存储路径信息(即目标文件未读取),则本发明实施例可根据所述目标存储路径信息读取目标文件,并在所述已读状态信息中增加所述目标存储路径信息。
可选的,更进一步的,所述已读状态信息可以包括:已读取完毕状态信息,和正在读取状态信息;其中,所述已读取完毕状态信息记录有已读取完毕的文件的存储路径信息,所述正在读取状态信息记录有正在读取的文件的存储路径信息;
从而,本发明实施例可检测已读取完毕状态信息是否记录所述目标存储路径信息;若检测已读取完毕状态信息未记录所述目标存储路径信息,则可检测正在读取状态信息是否记录所述目标存储路径信息;若检测正在读取状态信息未记录所述目标存储路径信息(即目标文件未读取),可根据所述目标存储路径信息读取目标文件;
同时,在根据所述目标存储路径信息读取目标文件时,将所述目标存储路径信息添加至正在读取状态信息;在成功读取所述目标文件后,从正在读取状态信息中移除所述目标存储路径信息,并在已读取完毕状态信息中添加所述目标存储路径信息。
作为另一种可选实现,所述预定状态信息可以包括:未读状态信息;所述未读状态信息记录有未读取文件的存储路径信息;从而,本发明实施例可检测所述未读状态信息是否记录有所述目标存储路径信息;若所述未读状态信息记录有所述目标存储路径信息(即目标文件未读取),可根据所述目标存储路径信息读取目标文件;同时,在所述未读状态信息中删除所述目标存储路径信息。
本发明实施例提供的文件读取方法,可在任一线程读取目标文件的过程中,在预定状态信息中,根据所述目标存储路径信息确定所述目标文件的读取状态,其中,预定状态信息记录有预定读取状态的文件的存储路径信息;从而在目标文件的读取状态为未读取时,可根据所述目标存储路径信息读取目标文件,并调整所述预定状态信息的记录,实现文件读取。本发明实施例可在任一线程读取目标文件时,通过预定状态信息检测目标文件的读取状态,从而仅对未读取的目标文件进行读取,进而可降低多线程重复读取目标文件的概率,提升文件读取效率。
本发明实施例提供的文件读取方法可适用于多文件的时用时读场景,并降低多线程重复读取文件的概率,提升文件读取效率。
目前一种常用的多线程并发读取多文件的方式主要是:确定多文件的存储路径信息;将多文件的存储路径信息平均分配给多线程的各个线程;由各个线程基于所分配的存储路径信息将文件读取到内存。但是,这种文件读取方式建立在提前确定多文件的存储路径信息的情况,并不适用于多文件的时用时读场景。多文件的时用时读场景是指,当需要使用多文件中的某一文件时,才确定该文件的存储路径信息(如从映射文件解析出该文件的绝对路径),根据该存储路径信息将文件读取到内存;
在多文件的时用时读场景下,某一文件在使用时,才确定该文件的存储路径信息;这就导致多线程的某一线程在读取文件时,其他线程可能已经读取过该文件,或者其他线程正在读取该文件(即不同线程同时读取同一文件),存在文件重复读取的情况,降低了文件读取效率。基于此,本发明实施例提供的文件读取方法可在任一线程读取目标文件时,通过预定状态信息,检测目标文件是否处于未读取状态,从而仅对未读取状态的目标文件进行读取,以在多文件的时用时读场景下,降低多线程重复读取目标文件的概率,提升文件读取效率。当然,多文件的时用时读场景仅是本发明实施例提供的文件读取方法一种可选适用场景,本发明实施例提供的文件读取方法也可支持在其他文件处理场景下适用。
进一步,本发明实施例可在成功读取所述目标文件后,获取目标文件的内容,并在结果文件中记录所述目标文件的内存访问地址与对应的目标存储路径信息。
成功读取目标文件可以认为是,已将目标文件的内容读取到内存。为便于从内存中获取目标文件的内容,本发明实施例可将目标文件在内存的内存访问地址添加到结果文件(结果文件可命名为Result文件),并在结果文件中添加目标文件的内存访问地址对应的目标存储路径信息,即结果文件可记录目标文件的内存访问地址与对应的目标存储路径信息;
从而在从内存获取目标文件的内容时(如在处理目标文件时,需从内存获取目标文件的内容),可根据所述目标存储路径信息从结果文件中获取目标文件的内存访问地址,进而可根据目标文件的内存访问地址从内存获取目标文件的内容。
可选的,目标文件的内存访问地址可以是目标文件在内存的首地址,如目标文件在内存对应的指针。
作为本发明实施例公开内容的一种可选实现,在使用多线程并发读取多文件时,可由主线程负责启动多个线程,启动后的每个线程负责进行文件读取。在执行文件处理任务的场景下,本发明实施例可采用整体调度实现任务处理的控制,如每一个线程除实现文件读取外,还涉及对读取的文件内容进行处理,在本发明实施例中,读取文件和处理读取的文件内容并不分割,而是由读取文件的线程一并处理读取的文件内容。
可选的,图4示出了本发明实施例提供的文件处理方法的一可选流程,参照图4,该流程可以包括:
步骤S30、将映射文件存储至内存。
可选的,映射文件可以存储至内存,并提供内存访问地址。在使用多线程并发处理多文件时,映射文件可以记录需处理的各文件在硬盘的存储路径信息。
步骤S31、启动多线程执行文件处理任务。
可选的,步骤S30和步骤S31可由主线程执行,主线程启动多线程执行文件处理任务后,后续流程可由各线程执行,以实现对各文件的处理。
图4示出了多线程可以包括线程1至线程N,下文步骤S32至S41可由多线程的任一线程执行,为便于说明,图4仅示意线程1执行的流程。
步骤S32、根据映射文件确定当前需处理的目标文件的目标存储路径信息。
可选的,线程1在执行文件处理任务时,可通过映射文件的内存访问地址遍历映射文件,将任一次访问的文件的存储路径信息确定为,当前需处理的目标文件的目标存储路径信息。
可选的,在另一方面,也可指定线程1当前需处理的目标文件,从而线程1可根据映射文件的内存访问地址,确定映射文件中记录的目标文件的目标存储路径信息。
步骤S33、检测已读取完毕状态信息是否记录目标存储路径信息,若是,执行步骤S34,若否,执行步骤S35。
步骤S34、返回预定值。
已读取完毕状态信息记录目标存储路径信息,说明目标文件已读取,本发明实施例可返回预定值,以指示后续对目标文件的处理方式。
可选的,预定值可以是预先设定的数值,例如NULL值。
步骤S35、检测正在读取状态信息是否记录目标存储路径信息,若是,执行步骤S34,若否,执行步骤S36。
步骤S36、根据目标存储路径信息读取目标文件,将所述目标存储路径信息添加至正在读取状态信息。
正在读取状态信息记录有所述目标存储路径信息,说明目标文件正被其他线程读取中,可返回预定值,以指示后续对目标文件的处理方式。正在读取状态信息未记录所述目标存储路径信息,说明目标文件未读取,可根据目标存储路径信息从硬盘将目标文件读取到内存,并将目标存储路径信息添加至正在读取状态信息,以指示目标文件正被线程1读取中。
步骤S37、在成功读取所述目标文件后,从正在读取状态信息中移除所述目标存储路径信息,并在已读取完毕状态信息中添加所述目标存储路径信息。
步骤S38、在成功读取所述目标文件后,在结果文件中记录所述目标文件的内存访问地址与对应的目标存储路径信息。
可选的,结果文件可记录已读取的各文件的内存访问地址与对应的存储路径信息。
步骤S39、在成功读取所述目标文件后,返回目标文件的内容。
可选的,步骤S37、步骤S38和步骤S39可不区分先后执行顺序;如可先执行步骤S37,再执行步骤S38和步骤S39;也可在目标文件读取成功后,同步执行步骤S37、步骤S38和步骤S39。
步骤S40、根据结果文件从内存获取目标文件的内容。
在返回预定值的情况下,目标文件已读取或者正读取中,线程1可根据目标文件的存储路径信息,从结果文件中确定目标文件的内存访问地址,进而可根据目标文件的内存访问地址从内存获取目标文件的内容。
在未返回预定值的情况下,即成功读取文件时,线程1可返回目标文件的内容。
步骤S41、处理目标文件的内容。
在获取目标文件的内容后,线程1可根据目标文件的内容继续执行文件处理任务,以处理目标文件的内容。可选的,处理目标文件的内容包括但不限于:分类文件内容、识别相关内容、对各内容进行加和操作等。
图4所示方法是基于结合使用已读取完毕状态信息和正在读取状态信息的情况,本发明实施例也可支持单独使用已读取完毕状态信息或正在读取状态信息的情况,对应方法流程的调整可结合前文对应说明得出,此处不再赘述。
本发明实施例提供的文件处理方法可在多文件时用时读场景下适用,降低多线程并发处理多文件的过程中,不同线程对同一文件重复读取的概率,提升文件读取效率,进而提升文件处理效率。
可选的,文件的存储路径信息可以是文件的绝对路径,在本发明实施例中文件的绝对路径可唯一标识文件,例如文件的绝对路径可以包括:文件的盘符地址与文件名。示例的,以文件的绝对路径为“C:\windows\system32\cmd.exe”举例,其中“C:\windows\system32”为盘符地址,表示文件存储于计算设备的C盘windows文件夹下的system32文件夹中;“cmd.exe”表示文件名为cmd的exe文件。
作为本发明实施例公开内容的一种可选实现,本发明实施例可为每一线程设置多个线程分支,由线程的线程分支负责具体的文件读取操作,且不同线程的相同线程分支读取相同文件名分类的文件,以进一步在多文件时用时读场景下,降低文件重复读取的概率;
可选的,本发明实施例可设置不同分类符,且分类符的数量与一个线程中的线程分支的数量对应,一个线程中的一个线程分支对应一个分类符,不同线程中相同线程分支对应的分类符相同;从而,本发明实施例可在各文件的文件名中分别添加一个分类符,以使得每一文件仅由文件名中添加的分类符对应的线程分支读取;
示例的,如图5所示,N个线程中的每个线程可设置10个线程分支,如每一线程均具有线程分支1至线程分支10;同时,本发明实施例可设置字符为“1”至“10”的10个分类符,并使得一个线程中的一个线程分支对应一个分类符,且不同线程中的相同线程分支对应的分类符相同;例如,线程1至线程N中的线程分支1可对应分类符“1”,线程1至线程N中的线程分支2可对应分类符“2”,以此类推。当然,本发明实施例也可支持分类符“1”对应线程分支2等方式,只要使得一个线程中的一个线程分支对应一个分类符,且不同线程中的相同线程分支对应的分类符相同即可。
显然,上述以阿拉伯数字“1”至“10”作为分类符仅是一种可选方式,除使用阿拉伯数字作为分类符外,在其他可能是实现中,本发明实施例也可使用不同的英文字母表示不同的分类符。
可选的,分类符可添加在文件的文件名中,例如可添加在文件名的结尾或者开头,当然,也可在文件名的设定位置添加分类符;示例的,添加分类符“1”的文件名称的一种示例可以是cmd-1,或cmd.1等。
进一步,为在多文件时用时读场景下,进一步降低文件重复读取的概率,在同一时刻,不同线程中的相同线程分支仅有一个被锁定(未被锁定的线程分支将不用于读取文件),从而进一步降低不同线程中的同一线程分支同时读取相同文件的概率;可选的,不同线程中的同一线程分支可以理解为是,不同线程中相同序号的线程分支。
作为本发明实施例公开内容的一种可选实现,图6示出了本发明实施例提供的文件处理方法的另一可选流程,以存储路径信息使用存储路径本身为例,参照图6,该流程可以包括:
步骤S50、将映射文件存储至内存。
步骤S51、启动多线程执行文件处理任务。
可选的,步骤S50和步骤S51可由主线程执行。图6后续流程可由各线程执行,以实现对各文件的处理。为便于说明,图6和下述说明仅示意线程1执行的流程。
步骤S52、线程1根据映射文件确定,当前需处理的目标文件的目标存储路径。
在多文件时用时读场景下,线程1可遍历映射文件,将任一次访问得到的文件的存储路径确定为,当前需处理的目标文件的目标存储路径。
步骤S53、线程1检测Analyzed列表是否记录目标存储路径,若是,执行步骤S54,若否,执行步骤S55。
可选的,Analyzed列表仅是已读取完毕状态信息的一种可选形式。
步骤S54、线程1返回NULL值。
步骤S55、线程1根据所述目标存储路径指示的目标分类符,确定目标分类符对应的目标线程分支。
可选的,目标存储路径可以包括目标文件的盘符地址和文件名,本发明实施例可提取目标文件的文件名中添加的目标分类符(目标文件的文件名中添加的分类符可以称为目标分类符),根据分类符与线程分支的对应关系,确定所述目标分类符对应的目标线程分支(与目标分类符对应的线程分支可以称为目标线程分支)。
在确定目标线程分支后,可将目标文件的读取归类为由目标线程分支执行。
可选的,为便于说明,图6和下述说明以目标线程分支为线程分支1进行示例说明。
步骤S56、锁定线程1的线程分支1,以使其他线程的线程分支1不进行文件读取。
在确定目标文件的读取归类为由目标线程分支执行后,目标线程分支可锁定,以使得其他线程中与目标分类符对应的线程分支不同时进行文件读取,降低不同线程的相同线程分支重复读取相同文件的概率。
在一种可选实现中,本发明实施例可设置同步锁以实现线程分支的锁定,其中,同步锁的数量与一个线程中的线程分支的数量对应,且一个线程中的一个线程分支可对应一个同步锁,不同线程中的相同线程分支对应的同步锁相同,且一个同步锁同时仅可添加到一个对应的线程分支;
示例的,如图7所示,N个线程中的每个线程可设置10个线程分支,如每一线程均具有线程分支1至线程分支10;同时,本发明实施例可设置同步锁1至同步锁10,并使得一个线程中的一个线程分支对应一个同步锁,且不同线程中的相同线程分支对应的同步锁相同;例如,线程1至线程N中的线程分支1可对应同步锁1,线程1至线程N中的线程分支2可对应同步锁2,以此类推。当然,本发明实施例也可支持同步锁1对应线程分支2等方式,只要使得一个线程中的一个线程分支对应一个同步锁,且不同线程中的相同线程分支对应的同步锁相同即可。
从而,在实现锁定目标线程分支的过程中,本发明实施例可为目标线程分支添加对应的目标同步锁(与目标线程分支对应的同步锁可称为目标同步锁),以使得目标同步锁对应的其他线程分支无法添加目标同步锁,使得其他线程中与目标线程分支相同的线程分支不同时进行文件读取。
进一步,如果目标线程分支对应的目标同步锁已被添加至对应的其他线程分支(即目标同步锁不空闲),则在实现锁定目标线程分支的过程中,目标线程分支可排队等待其他线程分支解除添加目标同步锁(即等待目标同步锁空闲);
示例的,本发明实施例可设置排队队列,在任一线程分支需要锁定时,线程分支可按先后顺序排队等待添加对应的同步锁;如图8所示,线程1、2和3的线程分支1需要添加同步锁1,此时同步锁1正添加到线程2的线程分支1,因此线程1和3的线程分支1可按先后顺序排队等待添加同步锁1;此处所指的先后顺序可以是,确定为线程分支添加同步锁的先后顺序;
可见,在本发明实施例中,目标线程分支可检测目标线程分支对应的目标同步锁是否空闲;若检测结果为是,则可为目标线程分支添加所述目标同步锁,以使得与目标同步锁对应的其他线程分支无法添加目标同步锁;若检测结果为否,则目标线程分支可排队等待直至所述目标同步锁空闲。
本发明实施例中,设置一个同步锁同时仅可添加到一个对应的线程分支,可使得具有相同分类符的文件名的文件同时仅可被一个对应的线程分支读取,可极大的降低相同文件被不同线程分支读取的概率,极大的降低文件重复读取的概率。
步骤S57、线程1的线程分支1检测Analyzing列表是否记录所述目标存储路径,若是,执行步骤S58,若否,执行步骤S59。
可选的,Analyzing列表可以是正在读取状态信息的一种可选形式。
步骤S58、线程1的线程分支1返回NULL值。
步骤S59、线程1的线程分支1根据目标存储路径读取目标文件,将所述目标存储路径添加至Analyzing列表。
步骤S60、线程1的线程分支1在成功读取所述目标文件后,从Analyzing列表中移除所述目标存储路径,在Analyzed列表中添加所述目标存储路径,并在结果文件中记录所述目标文件的内存访问地址与对应的目标存储路径。
步骤S61、线程1的线程分支1返回读取的目标文件的内容。
步骤S62、线程1的线程分支1解锁。
可选的,步骤S60、步骤S61和步骤S62可以不区分先后执行顺序,如步骤S60、步骤S61和步骤S62可在线程分支1成功读取目标文件后同步执行。
可选的,在目标线程分支成功读取目标文件后(在本发明实施例中,线程分支1是目标线程分支的一种可选示例),本发明实施例可将目标线程分支解除添加对应的目标同步锁,以实现目标线程分支的解锁,使得多线程中与目标同步锁对应的其他线程分支能够添加上目标同步锁,即使得多线程中与目标线程分支相同的线程分支可进行文件读取。
在一种可选实现中,线程分支的锁定可以是:为线程分支添加对应的同步锁实现,线程分支的解锁可以是:为线程分支解除添加对应的同步锁。
可选的,本发明实施例中线程分支的执行过程可以涉及线程分支锁定至解锁的阶段,线程分支解锁后的后续流程可回归由线程执行。
步骤S63、线程1若检测返回NULL值,根据结果文件从内存获取目标文件的内容;若检测到返回非NULL值,获取返回的目标文件的内容。
可选的,在线程1检测返回NULL值时,线程1可根据所述目标存储路径从结果文件中获取目标文件的内存访问地址,根据目标文件的内存访问地址从内存获取目标文件的内容。线程1检测到返回非NULL值,说明线程1的线程分支1成功读取到目标文件的内容,则可直接获取线程分支1返回的目标文件的内容。
步骤S64、线程1处理目标文件的内容。
可以看出,本发明实施例提供的文件处理方法是将文件的读取和处理整合由同一线程执行,并不是将文件的读取和处理分开由不同线程的执行;本发明实施例通过将文件的读取和处理整合由同一线程执行,可更好的适于多文件的时用时读场景,提升文件的读取、处理效率。
示例的,假设一个线程具有10个线程分支,利用本发明实施例提供的文件处理方法,可在10个线程的情况下,实现10个线程分支的并发读取、处理文件,可极大的提升文件读取、处理效率;并且在这个过程中,可极大的降低文件重复读取的概率。
本发明实施例提供的文件读取方法可适用于多文件的时用时读场景,当读取到内存中的文件长时间没有使用时,利用本发明实施例提供的文件读取方法,对内存中长时间未被使用的文件进行释放,并在下次使用该文件时,可利用本发明实施例提供的文件读取方法,实现该文件的时用时读;
可选的,本发明实施例可检测内存中读取的文件的最近使用时间,将内存中最近使用时间达到预定时间的文件进行释放。
可选的,本发明实施例还提供另一种释放内存中文件的方式,本发明实施例可在内存设置释放队列,释放队列可以记录读取到内存的文件;从而本发明实施例可按照先进先出的原则,将释放队列记录的文件进行释放;在一种可选实现中,在释放队列记录的文件的数量达到预定数量,或者在释放队列记录的文件的数据量达到预定数据量时,本发明实施例可释放处于释放队列的队列开头的文件;
示例的,以释放队列支持的文件数量为5为例,释放队列已先后记录有5份文件,在需将第6份文件的内容读取到内存时,可释放处于释放队列的队列开头的第1份文件,从而使得第6份文件可进入到释放队列中。
本发明实施例提供的文件读取方法可对内存中长时间未被使用的文件进行释放,为内存优化提供了可能,可实现内存中文件的按需释放和文件的按需读取,可避免不同线程重复读取相同文件;本发明实施例可在降低文件重复读取概率的情况下,提升文件读取、处理效率,并进一步节省内存开销。
上文描述了本发明实施例提供的多个实施例方案,各实施例方案介绍的各可选方式可在不冲突的情况下相互结合、交叉引用,从而延伸出多种可能的实施例方案,这些均可认为是本发明实施例披露、公开的实施例方案。
下面对本发明实施例提供的文件读取装置进行介绍,下文描述的文件读取装置可以认为是,计算设备为实现本发明实施例提供的文件读取方法所需设置的程序模块架构。下文描述的文件读取装置的内容可与,上文描述的文件读取方法的内容相互对应参照。
图9为本发明实施例提供的文件读取装置的一可选结构框图,该文件读取装置可应用于计算设备,具体可应用于计算设备的多线程中的任一线程;参照图9,该文件读取装置可以包括:
目标存储路径信息获取模块100,用于获取目标文件的目标存储路径信息;
读取状态确定模块110,用于在预定状态信息中,根据所述目标存储路径信息确定所述目标文件的读取状态;所述预定状态信息记录有预定读取状态的文件的存储路径信息;
读取执行模块120,用于若所述目标文件的读取状态为未读取,根据所述目标存储路径信息读取目标文件,并调整所述预定状态信息的记录。
可选的,一方面,所述预定状态信息包括:已读状态信息;所述预定状态信息记录有预定读取状态的文件的存储路径信息包括:所述已读状态信息记录有已读文件的存储路径信息;
读取状态确定模块110,用于在预定状态信息中,根据所述目标存储路径信息确定所述目标文件的读取状态,具体包括:
检测所述已读状态信息是否记录有所述目标存储路径信息;
读取执行模块120,用于若所述目标文件的读取状态为未读取,根据所述目标存储路径信息读取目标文件,具体包括:
若所述已读状态信息未记录有所述目标存储路径信息,根据所述目标存储路径信息读取目标文件。
可选的,读取执行模块120,用于调整所述预定状态信息的记录,具体包括:
在所述已读状态信息中增加所述目标存储路径信息。
可选的,更进一步,所述已读状态信息包括:已读取完毕状态信息,和正在读取状态信息;其中,所述已读取完毕状态信息记录有已读取完毕的文件的存储路径信息,所述正在读取状态信息记录有正在读取的文件的存储路径信息;
读取状态确定模块110,用于检测所述已读状态信息是否记录有所述目标存储路径信息,具体包括:
检测已读取完毕状态信息是否记录所述目标存储路径信息;
若检测已读取完毕状态信息未记录所述目标存储路径信息,检测正在读取状态信息是否记录所述目标存储路径信息。
可选的,读取执行模块120,用于若所述已读状态信息未记录有所述目标存储路径信息,根据所述目标存储路径信息读取目标文件,具体包括:
若检测正在读取状态信息未记录所述目标存储路径信息,根据所述目标存储路径信息读取目标文件。
可选的,读取执行模块120,用于在所述已读状态信息中增加所述目标存储路径信息,具体包括:
在根据所述目标存储路径信息读取目标文件时,将所述目标存储路径信息添加至正在读取状态信息;
在成功读取所述目标文件后,从正在读取状态信息中移除所述目标存储路径信息,并在已读取完毕状态信息中添加所述目标存储路径信息。
可选的,另一方面,所述预定状态信息包括:未读状态信息;所述预定状态信息记录有预定读取状态的文件的存储路径信息包括:所述未读状态信息记录有未读取文件的存储路径信息;
读取状态确定模块110,用于在预定状态信息中,根据所述目标存储路径信息确定所述目标文件的读取状态,具体包括:
检测所述未读状态信息是否记录有所述目标存储路径信息。
可选的,读取执行模块120,用于若所述目标文件的读取状态为未读取,根据所述目标存储路径信息读取目标文件,具体包括:
若所述未读状态信息记录有所述目标存储路径信息,根据所述目标存储路径信息读取目标文件;
可选的,读取执行模块120,用于调整所述预定状态信息的记录,具体包括:
在所述未读状态信息中删除所述目标存储路径信息。
可选的,文件的存储路径信息可以包括文件的绝对路径;所述文件的绝对路径包括文件的盘符地址与文件名;其中,每一线程设置有多个线程分支,不同线程的相同线程分支读取相同文件名分类的文件。
可选的,各文件的文件名均添加有分类符,且一个线程中的一个线程分支对应一个分类符,不同线程中的相同线程分支对应的分类符相同;可选的,图10示出了本发明实施例提供的文件读取装置的另一可选结构框图,结合图9和图10所示,该文件读取装置还可以包括:
目标线程分支确定模块130,用于若检测已读取完毕状态信息未记录所述目标存储路径信息,根据所述目标存储路径信息指示的目标分类符,确定与目标分类符对应的目标线程分支;其中,至少如下步骤划分由目标线程分支执行:
检测正在读取状态信息是否记录所述目标存储路径信息;
若所述目标文件的读取状态为未读取,根据所述目标存储路径信息读取目标文件,并调整所述预定状态信息的记录。
可选的,不同线程中的相同线程分支不同时读取相同文件名分类的文件。
可选的,图11示出了本发明实施例提供的文件读取装置的再一可选结构框图,结合图10和图11所示,该文件读取装置还可以包括:
锁定模块140,用于在目标线程分支执行所述检测正在读取状态信息是否记录所述目标存储路径信息的步骤前,锁定目标线程分支,以使得与目标分类符对应的其他线程分支不同时读取文件;
解锁模块150,用于在目标线程分支成功读取所述目标文件后,解锁目标线程分支。
可选的,一个线程中的一个线程分支对应一个同步锁,不同线程中的相同线程分支对应的同步锁相同,且一个同步锁同时仅添加到一个对应的线程分支;锁定模块140,用于锁定目标线程分支,可以具体包括:
检测目标线程分支对应的目标同步锁是否空闲;
若所述目标同步锁空闲,为目标线程分支添加所述目标同步锁,以使得与目标同步锁对应的其他线程分支无法添加目标同步锁;
若所述目标同步锁不空闲,排队等待直至所述目标同步锁空闲。
可选的,解锁模块150,用于解锁目标线程分支,可以具体包括:
为目标线程分支解除添加所述目标同步锁。
可选的,图12示出了本发明实施例提供的文件读取装置的又一可选结构框图,结合图11和图12所示,该文件读取装置还可以包括:
结果文件记录模块160,用于在目标线程分支成功读取所述目标文件后,由目标线程分支获取目标文件的内容,并在结果文件中记录所述目标文件的内存访问地址与对应的目标存储路径信息;其中,所述结果文件记录有已读取完毕的文件的内存访问地址与对应的存储路径信息;
内容获取模块170,用于若所述已读取完毕状态信息记录所述目标存储路径信息,或所述正在读取状态信息记录所述目标存储路径信息,根据所述结果文件从内存获取目标文件的内容;
内容处理模块180,用于处理目标文件的内容。
可选的,本发明实施例也可在图11所示文件读取装置基础上,单独新增结果文件记录模块160,和/或内容获取模块170。
可选的,目标存储路径信息获取模块100,用于获取目标文件的目标存储路径信息,可以具体包括:
在遍历映射文件的过程中,将映射文件中任一次访问的文件的存储路径信息确定为,所述目标文件的目标存储路径信息;其中,所述映射文件记录有文件处理任务需处理的任一文件的存储路径信息。
可选的,图13示出了本发明实施例提供的文件读取装置的又另一可选结构框图,结合图9和图13所示,该文件读取装置还可以包括:
释放模块190,用于检测内存中读取的文件的最近使用时间,将内存中最近使用时间达到预定时间的文件进行释放。
上文描述的本发明实施例提供的文件读取装置的多个实施例方案,可在不冲突的情况下相互结合、交叉引用,从而延伸出多种可能的实施例方案,这些均可认为是本发明实施例披露、公开的实施例方案。
上述描述的文件读取装置可以程序形式装载于计算设备中;可选的,图14示出了本发明实施例提供的计算设备的硬件架构,该计算设备可以是终端设备(例如智能手机、平板电脑、笔记本电脑、PC等电子设备),也可以是网络服务器;参照图14,该计算设备可以包括:至少一个处理器01,至少一个通信接口02,至少一个存储器03和至少一个通信总线04;
在本发明实施例中,处理器01、通信接口02、存储器03、通信总线04的数量为至少一个,且处理器01、通信接口02、存储器03通过通信总线04完成相互间的通信;显然,图1所示的处理器01、通信接口02、存储器03和通信总线04的通信连接示意仅是可选的一种方式。
在本发明实施例中,存储器03可存储实现本发明实施例提供的文件读取方法程序,处理器04可调用所述程序,以执行本发明实施例提供的文件读取方法。
可选的,本发明实施例还提供一种存储介质,该存储介质可以存储实现本发明实施例提供的文件读取方法的程序。
可选的,所述程序具体用于:
获取目标文件的目标存储路径信息;
在预定状态信息中,根据所述目标存储路径信息确定所述目标文件的读取状态;所述预定状态信息记录有预定读取状态的文件的存储路径信息;
若所述目标文件的读取状态为未读取,根据所述目标存储路径信息读取目标文件,并调整所述预定状态信息的记录。
可选的,所述程序的细化功能和扩展功能可参照上文相应部分的描述,此处不再赘述。
虽然本发明实施例披露如上,但本发明并非限定于此。任何本领域技术人员,在不脱离本发明的精神和范围内,均可作各种更动与修改,因此本发明的保护范围应当以权利要求所限定的范围为准。
Claims (18)
1.一种文件读取方法,其特征在于,所述文件读取方法应用于多线程的任一线程;所述文件读取方法包括:
获取目标文件的目标存储路径信息;
在预定状态信息中,根据所述目标存储路径信息确定所述目标文件的读取状态;所述预定状态信息记录有预定读取状态的文件的存储路径信息;
若所述目标文件的读取状态为未读取,根据所述目标存储路径信息读取目标文件,并调整所述预定状态信息的记录。
2.根据权利要求1所述的文件读取方法,其特征在于,所述预定状态信息包括:已读状态信息;所述预定状态信息记录有预定读取状态的文件的存储路径信息包括:所述已读状态信息记录有已读文件的存储路径信息;
所述在预定状态信息中,根据所述目标存储路径信息确定所述目标文件的读取状态包括:
检测所述已读状态信息是否记录有所述目标存储路径信息;
所述若所述目标文件的读取状态为未读取,根据所述目标存储路径信息读取目标文件包括:
若所述已读状态信息未记录有所述目标存储路径信息,根据所述目标存储路径信息读取目标文件。
3.根据权利要求2所述的文件读取方法,其特征在于,所述调整所述预定状态信息的记录包括:
在所述已读状态信息中增加所述目标存储路径信息。
4.根据权利要求3所述的文件读取方法,其特征在于,所述已读状态信息包括:已读取完毕状态信息,和正在读取状态信息;其中,所述已读取完毕状态信息记录有已读取完毕的文件的存储路径信息,所述正在读取状态信息记录有正在读取的文件的存储路径信息;
所述检测所述已读状态信息是否记录有所述目标存储路径信息包括:
检测已读取完毕状态信息是否记录所述目标存储路径信息;
若检测已读取完毕状态信息未记录所述目标存储路径信息,检测正在读取状态信息是否记录所述目标存储路径信息;
所述若所述已读状态信息未记录有所述目标存储路径信息,根据所述目标存储路径信息读取目标文件包括:
若检测正在读取状态信息未记录所述目标存储路径信息,根据所述目标存储路径信息读取目标文件。
5.根据权利要求4所述的文件读取方法,其特征在于,所述在所述预定状态信息中增加所述目标存储路径信息包括:
在根据所述目标存储路径信息读取目标文件时,将所述目标存储路径信息添加至正在读取状态信息;
在成功读取所述目标文件后,从正在读取状态信息中移除所述目标存储路径信息,并在已读取完毕状态信息中添加所述目标存储路径信息。
6.根据权利要求1所述的文件读取方法,其特征在于,所述预定状态信息包括:未读状态信息;所述预定状态信息记录有预定读取状态的文件的存储路径信息包括:所述未读状态信息记录有未读取文件的存储路径信息;
所述在预定状态信息中,根据所述目标存储路径信息确定所述目标文件的读取状态包括:
检测所述未读状态信息是否记录有所述目标存储路径信息;
所述若所述目标文件的读取状态为未读取,根据所述目标存储路径信息读取目标文件包括:
若所述未读状态信息记录有所述目标存储路径信息,根据所述目标存储路径信息读取目标文件;
所述调整所述预定状态信息的记录包括:
在所述未读状态信息中删除所述目标存储路径信息。
7.根据权利要求4或5所述的文件读取方法,其特征在于,文件的存储路径信息包括文件的绝对路径;所述文件的绝对路径包括文件的盘符地址与文件名;其中,每一线程设置有多个线程分支,不同线程的相同线程分支读取相同文件名分类的文件。
8.根据权利要求7所述的文件读取方法,其特征在于,各文件的文件名均添加有分类符,且一个线程中的一个线程分支对应一个分类符,不同线程中的相同线程分支对应的分类符相同;所述方法还包括:
若检测已读取完毕状态信息未记录所述目标存储路径信息,根据所述目标存储路径信息指示的目标分类符,确定与目标分类符对应的目标线程分支;其中,至少如下步骤划分由目标线程分支执行:
检测正在读取状态信息是否记录所述目标存储路径信息;
若所述目标文件的读取状态为未读取,根据所述目标存储路径信息读取目标文件,并调整所述预定状态信息的记录。
9.根据权利要求8所述的文件读取方法,其特征在于,不同线程中的相同线程分支不同时读取相同文件名分类的文件。
10.根据权利要求9所述的文件读取方法,其特征在于,所述方法还包括:
在目标线程分支执行所述检测正在读取状态信息是否记录所述目标存储路径信息的步骤前,锁定目标线程分支,以使得与目标分类符对应的其他线程分支不同时读取文件;
在目标线程分支成功读取所述目标文件后,解锁目标线程分支。
11.根据权利要求10所述的文件读取方法,其特征在于,一个线程中的一个线程分支对应一个同步锁,不同线程中的相同线程分支对应的同步锁相同,且一个同步锁同时仅添加到一个对应的线程分支;所述锁定目标线程分支包括:
检测目标线程分支对应的目标同步锁是否空闲;
若所述目标同步锁空闲,为目标线程分支添加所述目标同步锁,以使得与目标同步锁对应的其他线程分支无法添加目标同步锁;
若所述目标同步锁不空闲,排队等待直至所述目标同步锁空闲。
12.根据权利要求8-11任一项所述的文件读取方法,其特征在于,所述方法还包括:
在目标线程分支成功读取所述目标文件后,由目标线程分支获取目标文件的内容,并在结果文件中记录所述目标文件的内存访问地址与对应的目标存储路径信息;其中,所述结果文件记录有已读取完毕的文件的内存访问地址与对应的存储路径信息。
13.根据权利要求12所述的文件读取方法,其特征在于,所述方法还包括:
若所述已读取完毕状态信息记录所述目标存储路径信息,或所述正在读取状态信息记录所述目标存储路径信息,根据所述结果文件从内存获取目标文件的内容。
14.根据权利要求1所述的文件读取方法,其特征在于,所述获取目标文件的目标存储路径信息包括:
在遍历映射文件的过程中,将映射文件中任一次访问的文件的存储路径信息确定为,所述目标文件的目标存储路径信息;其中,所述映射文件记录有文件处理任务需处理的任一文件的存储路径信息。
15.根据权利要求1所述的文件读取方法,其特征在于,所述方法还包括:
检测内存中读取的文件的最近使用时间,将内存中最近使用时间达到预定时间的文件进行释放。
16.一种文件读取装置,其特征在于,所述文件读取装置应用于多线程的任一线程;所述文件读取装置包括:
目标存储路径信息获取模块,用于获取目标文件的目标存储路径信息;
读取状态确定模块,用于在预定状态信息中,根据所述目标存储路径信息确定所述目标文件的读取状态;所述预定状态信息记录有预定读取状态的文件的存储路径信息;
读取执行模块,用于若所述目标文件的读取状态为未读取,根据所述目标存储路径信息读取目标文件,并调整所述预定状态信息的记录。
17.一种计算设备,其特征在于,包括:至少一个存储器和至少一个处理器;所述存储器存储有程序,所述处理器调用所述程序,以实现权利要求1-15任一项所述的文件读取方法的步骤。
18.一种存储介质,其特征在于,所述存储介质存储有实现权利要求1-15任一项所述的文件读取方法的程序。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910016494.5A CN111414337B (zh) | 2019-01-08 | 2019-01-08 | 一种文件读取方法、装置、计算设备及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910016494.5A CN111414337B (zh) | 2019-01-08 | 2019-01-08 | 一种文件读取方法、装置、计算设备及存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN111414337A true CN111414337A (zh) | 2020-07-14 |
CN111414337B CN111414337B (zh) | 2023-05-26 |
Family
ID=71490700
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910016494.5A Active CN111414337B (zh) | 2019-01-08 | 2019-01-08 | 一种文件读取方法、装置、计算设备及存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN111414337B (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112256196A (zh) * | 2020-10-20 | 2021-01-22 | 北京字跳网络技术有限公司 | 文件读取方法、装置、电子设备和计算机可读介质 |
Citations (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6009269A (en) * | 1997-03-10 | 1999-12-28 | Digital Equipment Corporation | Detecting concurrency errors in multi-threaded programs |
CN1661562A (zh) * | 2004-02-23 | 2005-08-31 | 鸿富锦精密工业(深圳)有限公司 | 多线程发送资料系统及方法 |
US20130041928A1 (en) * | 2010-03-11 | 2013-02-14 | Rakuten, Inc. | Information processing method, information processing device, program, and recording medium |
CN105824709A (zh) * | 2016-03-11 | 2016-08-03 | 浙江大华技术股份有限公司 | 一种临界区访问方法及装置 |
US20170177371A1 (en) * | 2017-03-09 | 2017-06-22 | Joel Kevin Jones | Method and Apparatus for Detecting Memory Conflicts Using Distinguished Memory Addresses |
CN107154968A (zh) * | 2017-04-26 | 2017-09-12 | 深圳市优网科技有限公司 | 一种数据处理方法及设备 |
CN107992535A (zh) * | 2017-11-23 | 2018-05-04 | 上海斐讯数据通信技术有限公司 | 文件快速寻址装置、方法、系统及计算机可读存储介质 |
CN108334505A (zh) * | 2017-01-19 | 2018-07-27 | 阿里巴巴集团控股有限公司 | 一种数据处理方法、装置、服务器及库存系统 |
CN108509260A (zh) * | 2018-01-31 | 2018-09-07 | 深圳市万普拉斯科技有限公司 | 线程识别处理方法、装置、计算机设备和存储介质 |
CN108804707A (zh) * | 2018-06-21 | 2018-11-13 | 腾讯科技(深圳)有限公司 | 一种页面处理方法、装置以及相关设备 |
-
2019
- 2019-01-08 CN CN201910016494.5A patent/CN111414337B/zh active Active
Patent Citations (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6009269A (en) * | 1997-03-10 | 1999-12-28 | Digital Equipment Corporation | Detecting concurrency errors in multi-threaded programs |
CN1661562A (zh) * | 2004-02-23 | 2005-08-31 | 鸿富锦精密工业(深圳)有限公司 | 多线程发送资料系统及方法 |
US20130041928A1 (en) * | 2010-03-11 | 2013-02-14 | Rakuten, Inc. | Information processing method, information processing device, program, and recording medium |
CN105824709A (zh) * | 2016-03-11 | 2016-08-03 | 浙江大华技术股份有限公司 | 一种临界区访问方法及装置 |
CN108334505A (zh) * | 2017-01-19 | 2018-07-27 | 阿里巴巴集团控股有限公司 | 一种数据处理方法、装置、服务器及库存系统 |
US20170177371A1 (en) * | 2017-03-09 | 2017-06-22 | Joel Kevin Jones | Method and Apparatus for Detecting Memory Conflicts Using Distinguished Memory Addresses |
CN107154968A (zh) * | 2017-04-26 | 2017-09-12 | 深圳市优网科技有限公司 | 一种数据处理方法及设备 |
CN107992535A (zh) * | 2017-11-23 | 2018-05-04 | 上海斐讯数据通信技术有限公司 | 文件快速寻址装置、方法、系统及计算机可读存储介质 |
CN108509260A (zh) * | 2018-01-31 | 2018-09-07 | 深圳市万普拉斯科技有限公司 | 线程识别处理方法、装置、计算机设备和存储介质 |
CN108804707A (zh) * | 2018-06-21 | 2018-11-13 | 腾讯科技(深圳)有限公司 | 一种页面处理方法、装置以及相关设备 |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112256196A (zh) * | 2020-10-20 | 2021-01-22 | 北京字跳网络技术有限公司 | 文件读取方法、装置、电子设备和计算机可读介质 |
CN112256196B (zh) * | 2020-10-20 | 2023-03-24 | 北京字跳网络技术有限公司 | 文件读取方法、装置、电子设备和计算机可读介质 |
Also Published As
Publication number | Publication date |
---|---|
CN111414337B (zh) | 2023-05-26 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10585874B2 (en) | Locking concurrent commands in a database management system | |
US7454581B2 (en) | Read-copy update grace period detection without atomic instructions that gracefully handles large numbers of processors | |
US7472228B2 (en) | Read-copy update method | |
CN110399227B (zh) | 一种数据访问方法、装置和存储介质 | |
US7580979B2 (en) | Message ordering in a messaging system | |
US20070101071A1 (en) | Realtime-safe read copy update with per-processor read/write locks | |
US8626765B2 (en) | Processing database operation requests | |
JP3611295B2 (ja) | コンピュータシステム、メモリ管理方法及び記憶媒体 | |
US5293600A (en) | Counter and flux bit locking for very fast shared serialization of shared data objects | |
CN113342507B (zh) | 一种分布式锁服务实现方法、装置及计算机设备 | |
CN113239098B (zh) | 一种数据管理方法、计算机及可读存储介质 | |
US20190310949A1 (en) | Supporting Concurrent Remove Operations and Add-To-Front Operations on a Least Recently Used (LRU) Queue | |
US20080320494A1 (en) | Data processing method, data processing apparatus, and data processing program | |
CN108334675B (zh) | 数字飞行器工况集批量仿真的人工智能处理方法及系统 | |
CN113448701B (zh) | 一种多进程外呼控制方法、系统、电子设备及存储介质 | |
CN111414337B (zh) | 一种文件读取方法、装置、计算设备及存储介质 | |
CN114327642A (zh) | 一种数据读写的控制方法及电子设备 | |
US10515066B2 (en) | Atomic updates of versioned data structures | |
CN106959819B (zh) | 数据存储方法、装置和系统以及便携式电子设备 | |
CN109791541B (zh) | 日志序列号生成方法、装置及可读存储介质 | |
CN109032940B (zh) | 一种测试场景录入方法、装置、设备及存储介质 | |
CN115454765A (zh) | 基于阻塞队列异步日志的数据处理方法及相关设备 | |
US7243113B2 (en) | Information management system, information management method, and storage medium for managing execution records | |
CN112181617A (zh) | 一种基于特定索引结构的高效调度算法 | |
CN111405015A (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 |