CN116126505A - 一种操作任务调度方法、装置、计算机设备及存储介质 - Google Patents

一种操作任务调度方法、装置、计算机设备及存储介质 Download PDF

Info

Publication number
CN116126505A
CN116126505A CN202310139015.5A CN202310139015A CN116126505A CN 116126505 A CN116126505 A CN 116126505A CN 202310139015 A CN202310139015 A CN 202310139015A CN 116126505 A CN116126505 A CN 116126505A
Authority
CN
China
Prior art keywords
task
executed
file
blocking
state information
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
Application number
CN202310139015.5A
Other languages
English (en)
Inventor
余烜
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Beijing Youzhuju Network Technology Co Ltd
Original Assignee
Beijing Youzhuju Network Technology Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Beijing Youzhuju Network Technology Co Ltd filed Critical Beijing Youzhuju Network Technology Co Ltd
Priority to CN202310139015.5A priority Critical patent/CN116126505A/zh
Publication of CN116126505A publication Critical patent/CN116126505A/zh
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/46Multiprogramming arrangements
    • G06F9/48Program initiating; Program switching, e.g. by interrupt
    • G06F9/4806Task transfer initiation or dispatching
    • G06F9/4843Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
    • G06F9/4881Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues
    • YGENERAL 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
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE 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/00Energy efficient computing, e.g. low power processors, power management or thermal management

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并发执行读写操作,线程1读取文件内容时,线程2已经通过写操作删除了文件内容,此时就会导致线程1读操作出错。如果为了避免读写操作冲突,采用串行队列的方式对磁盘文件执行读写操作时,同一时间只能执行一个操作,会极大地影响对整个磁盘文件的读写效率。
发明内容
本公开实施例至少提供一种操作任务调度方法、装置、计算机设备及存储介质。
第一方面,本公开实施例提供了一种操作任务调度方法,包括:
针对多个文件,并行执行以下任务调度过程:
响应于所述文件满足操作任务调度条件,获取所述文件的任务执行状态信息;所述任务执行状态信息用于指示所述文件中是否存在正在执行的操作任务,以及在存在正在执行的操作任务的情况下,所执行的操作任务的第一任务类型和操作任务数量;所述操作任务的任务类型包括阻塞任务和非阻塞任务;
基于所述文件的任务执行状态信息,以及所述文件对应的待执行操作任务的第二任务类型,确定对所述待执行操作任务的调度结果。
一种可选的实施方式中,所述基于所述文件的任务执行状态信息,以及所述文件对应的待执行操作任务的第二任务类型,确定对所述待执行操作任务的调度结果,包括:
若所述任务执行状态信息指示不存在正在执行的操作任务,则将所述待执行操作任务派发到所述文件的并发队列;所述并发队列中的待执行操作任务被同步执行;
若所述任务执行状态信息指示存在正在执行的非阻塞任务、且所述待执行操作任务为非阻塞任务,则将所述待执行操作任务派发到所述并发队列;
若所述任务执行状态信息指示存在正在执行的非阻塞任务、且所述待执行操作任务为阻塞任务,则将所述待执行操作任务缓存到待派发队列中;其中,所述待派发队列中的待执行操作任务,在所述正在执行的多个阻塞操作任务执行完毕后,派发到所述并发队列;
若所述任务执行状态信息指示存在正在执行的阻塞任务,则将所述待执行操作任务缓存到所述待派发队列中。
一种可选的实施方式中,若所述任务执行状态信息指示不存在正在执行的操作任务,则将所述待执行操作任务派发到所述文件的并发队列之后,所述方法还包括:
若所述待执行操作任务为阻塞任务,则将所述任务执行状态信息指示的正在执行的操作任务的第一任务类型更新为所述阻塞任务;或者,
若所述待执行操作任务为非阻塞任务,则将所述任务执行状态信息指示的正在执行的操作任务的第一任务类型更新为所述非阻塞任务,以及将所述操作任务数量置为1。
一种可选的实施方式中,若所述任务执行状态信息指示存在正在执行的非阻塞任务、且所述待执行操作任务为非阻塞任务,则将所述待执行操作任务派发到所述并发队列之后,所述方法还包括:
将所述任务执行状态信息指示的所述操作任务数量加1。
一种可选的实施方式中,所述方法还包括:
在所述文件中的任一待执行操作任务执行完毕后,更新所述文件的任务执行状态信息。
一种可选的实施方式中,所述更新所述文件的任务执行状态信息,包括:
若所述任务执行状态信息指示存在正在执行的非阻塞任务、且所述非阻塞操作任务的操作任务数量大于1,则将所述任务执行状态信息指示的操作任务数量减1;
若所述任务执行状态信息指示存在正在执行的非阻塞任务、且所述非阻塞操作任务的操作任务数量等于1,则将所述任务执行状态信息更新为指示所述文件中不存在正在执行的操作任务;
若所述任务执行状态信息指示存在正在执行的阻塞任务,则将所述任务执行状态信息更新为指示所述文件中不存在正在执行的操作任务。
一种可选的实施方式中,所述文件对应的待执行操作任务为从任务调度队列中、与该文件对应的子调度队列中提取的;
所述方法还包括:
响应于接收到待执行操作任务,确定所述待执行操作任务对应的目标文件的文件标识;
将所述待执行操作任务存储到任务调度队列中,与所述文件标识对应的子调度队列中;所述子调度队列中的各待执行操作任务按照接收时间的先后顺序依次排列。
第二方面,本公开实施例还提供一种操作任务调度装置,包括:
执行模块,用于针对多个文件,并行执行以下任务调度过程:
响应于所述文件满足操作任务调度条件,获取所述文件的任务执行状态信息;所述任务执行状态信息用于指示所述文件中是否存在正在执行的操作任务,以及在存在正在执行的操作任务的情况下,所执行的操作任务的第一任务类型和操作任务数量;所述操作任务的任务类型包括阻塞任务和非阻塞任务;
基于所述文件的任务执行状态信息,以及所述文件对应的待执行操作任务的第二任务类型,确定对所述待执行操作任务的调度结果。
第三方面,本公开实施例还提供一种计算机设备,包括:处理器、存储器和总线,所述存储器存储有所述处理器可执行的机器可读指令,当计算机设备运行时,所述处理器与所述存储器之间通过总线通信,所述机器可读指令被所述处理器执行时执行上述第一方面,或第一方面中任一种可选的实施方式中的步骤。
第四方面,本公开实施例还提供一种计算机可读存储介质,该计算机可读存储介质上存储有计算机程序,该计算机程序被处理器运行时执行上述第一方面,或第一方面中任一种可选的实施方式中的步骤。
本公开实施例提供的操作任务调度方法,可以针对多个文件,并行执行任务调度过程,从而可以实现多个文件之间并发调度各自的读写操作,提高执行读写操作的效率。另外,在任务调度过程中,通过文件对应的任务执行状态信息可以标识文件对应的并发队列当前执行操作任务的状态,例如当前为阻塞状态或是非阻塞状态,进而可以结合待执行操作任务的任务类型(包括阻塞任务和非阻塞任务),进行操作任务的调度,比如,当前正在执行针对某个文件的写操作(阻塞任务)的情况下,就不进行其它操作的调度,当前正在执行针对该文件的读操作(非阻塞任务)的情况下,就可以派发其它的读操作任务,也即进行多个读操作任务的并发执行,从而可以避免出现任务冲突的情况,并且同时提高操作效率。
为使本公开的上述目的、特征和优点能更明显易懂,下文特举较佳实施例,并配合所附附图,作详细说明如下。
附图说明
为了更清楚地说明本公开实施例的技术方案,下面将对实施例中所需要使用的附图作简单地介绍,此处的附图被并入说明书中并构成本说明书中的一部分,这些附图示出了符合本公开的实施例,并与说明书一起用于说明本公开的技术方案。应当理解,以下附图仅示出了本公开的某些实施例,因此不应被看作是对范围的限定,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他相关的附图。
图1示出了本公开实施例所提供的一种操作任务调度方法的流程图;
图2示出了本公开实施例所提供的待执行操作任务的集合示意图;
图3示出了本公开实施例所提供的另一种操作任务调度方法的流程图;
图4示出了本公开实施例所提供的一种操作任务调度装置的结构示意图;
图5示出了本公开实施例所提供的一种计算机设备的示意图。
具体实施方式
为使本公开实施例的目的、技术方案和优点更加清楚,下面将结合本公开实施例中附图,对本公开实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本公开一部分实施例,而不是全部的实施例。通常在此处附图中描述和示出的本公开实施例的组件可以以各种不同的配置来布置和设计。因此,以下对在附图中提供的本公开的实施例的详细描述并非旨在限制要求保护的本公开的范围,而是仅仅表示本公开的选定实施例。基于本公开的实施例,本领域技术人员在没有做出创造性劳动的前提下所获得的所有其他实施例,都属于本公开保护的范围。
在频繁执行读写操作的场景中,通常采用并发队列执行读写操作,并发队列会采用异步线程的方式对同一个文件进行操作。例如,针对同一个文件,利用线程1执行读操作,利用线程2执行删除操作(一种写操作),当线程1需要读取文件内容时,线程2已经执行完删除操作,此时线程1将无法读取到文件内容,导致执行逻辑出现错误。
针对这种情况,如果采用串行队列的方式进行读写操作,同一时间对整个磁盘文件只能执行一个操作,无法快速地对多个文件执行读写操作。
此外,如果采用基于栅栏函数的并发队列的方式执行读写操作,此时,让写操作独占整个并发队列,在写操作之前的读操作可以并发执行,在写操作之后的读操作需要等待写操作执行完毕后,再并发执行。但是由于栅栏区需要先占用一个线程获取到用于阻塞并发队列的锁,然后再派发写操作,如果并发的读操作占用了剩余的线程,会导致线程池被耗尽,没有多余的线程执行写操作。而并发的读操作必须等待写操作执行完才能继续执行,无法释放线程,此时写操作又没有可用的线程先执行,因此导致写操作锁死。并且,栅栏函数会阻塞整个并发队列,因此无法同时对多个文件执行读写操作。
基于此,本公开提供了一种操作任务调度方法,可以针对多个文件,并行执行任务调度过程,从而可以实现多个文件之间并发调度各自的读写操作,提高执行读写操作的效率。另外,在任务调度过程中,通过文件对应的任务执行状态信息可以标识文件对应的并发队列当前执行操作任务的状态,例如当前为阻塞状态或是非阻塞状态,进行操作任务的调度,比如,当前正在执行针对某个文件的写操作(阻塞任务)的情况下,就不进行其它操作的调度,当前正在执行针对该文件的读操作(非阻塞任务)的情况下,就可以派发其它的读操作任务,也即进行多个读操作任务的并发执行,从而可以避免出现任务冲突的情况,并且同时提高操作效率。
针对以上方案所存在的缺陷以及所提出的解决方案,均是发明人在经过实践并仔细研究后得出的结果,因此,上述问题的发现过程以及下文中本公开针对上述问题所提出的解决方案,都应该是发明人在本公开过程中对本公开做出的贡献。
应注意到:相似的标号和字母在下面的附图中表示类似项,因此,一旦某一项在一个附图中被定义,则在随后的附图中不需要对其进行进一步定义和解释。
可以理解的是,在使用本公开各实施例公开的技术方案之前,均应当依据相关法律法规通过恰当的方式对本公开所涉及个人信息的类型、使用范围、使用场景等告知用户并获得用户的授权。
为便于对本实施例进行理解,首先对本公开实施例所公开的一种操作任务调度方法进行详细介绍,本公开实施例所提供的操作任务调度方法的执行主体一般为具有一定计算能力的计算机设备。
本公开实施例提供的操作任务调度方法可以应用于应用程序持久化数据等场景中。其中,在应用程序持久化数据的过程中,需要频繁交换内存数据与磁盘文件中的数据,即需要频繁地对磁盘中的文件执行读写操作。因此,本公开实施例可以实现在磁盘读写文件时,对读写操作任务进行调度。在实际中,还可以对内存中的对象执行类似于读写保护的操作任务,因此,本公开实施例还可以实现在对内存中的对象执行相关的保护操作时,对相关的保护操作任务进行调度。
参见图1所示,为本公开实施例提供的一种操作任务调度方法的流程图,所述方法可以包括针对多个文件,并行执行以下任务调度过程,也就是针对多个文件中的各文件执行以下任务调度过程可以是并发的,在针对各文件执行以下任务调度过程中,各文件之间的任务调度过程互不影响。该任务调度过程可以包括以下步骤:
S101:响应于所述文件满足操作任务调度条件,获取所述文件的任务执行状态信息;所述任务执行状态信息用于指示所述文件中是否存在正在执行的操作任务,以及在存在正在执行的操作任务的情况下,所执行的操作任务的第一任务类型和操作任务数量;所述操作任务的任务类型包括阻塞任务和非阻塞任务。
S102:基于所述文件的任务执行状态信息,以及所述文件对应的待执行操作任务的第二任务类型,确定对所述待执行操作任务的调度结果。
在本公开实施例中,各文件可以分别对应至少一个待执行操作任务。各文件对应的至少一个待执行操作任务可以包括对各文件执行相应操作的任务。例如,用户在打开或者保存某一文件时,可以生成针对该文件的读操作任务或者写操作任务。
在本公开实施例中,各文件可以对应有子调度队列,文件对应的待执行操作任务可以存储在文件对应的子调度队列中,也就是文件对应的待执行操作任务可以是从任务调度队列中、与该文件对应的子调度队列中提取的。
在具体实施中,响应于接收到待执行操作任务,可以确定待执行操作任务对应的目标文件的文件标识。然后将待执行操作任务存储到任务调度队列中,与文件标识对应的子调度队列中。子调度队列中的各待执行操作任务按照接收时间的先后顺序依次排列,即先接收到的待执行操作任务可以先排列在子调度队列中,后接收到的待执行操作任务可以后排列在子调度队列中。
在一种实施方式中,针对多个文件中的每个文件,该文件对应的至少一个待执行操作任务的集合可以用关键字Key表示。Key可以为文件的文件标识,例如文件路径、文件名称或其他自定义的文件标识等。通过Key可以实现对各文件对应的至少一个待执行操作任务进行聚合。如图2所示的待执行操作任务的集合示意图中,包括两个待执行操作任务的集合:文件标识1和文件标识2。每个集合中可以包括至少一个阻塞任务和/或至少一个非阻塞任务。每个集合中的待执行操作任务对应同一个文件。也就是,文件与集合可以是一一对应的关系。
针对多个文件中的每个文件,可以利用该文件对应的并发队列执行该文件的至少一个待执行操作任务。
在本公开实施例中,操作任务调度条件可以包括文件的并发队列中任一操作任务执行完毕。在文件的任一操作任务执行完毕的时候,可以获取该文件的任务执行状态信息。
通过该文件的任务执行状态信息,可以确定该文件中是否存在正在执行的操作任务,以及在存在正在执行的操作任务的情况下,所执行的操作任务的第一任务类型和操作任务数量。
这里,操作任务的任务类型可以包括阻塞任务(例如写操作)和非阻塞任务(例如读操作)。阻塞任务可以为阻塞并发队列的操作任务,也就是在同一时刻,并发队列只能执行一个阻塞任务;非阻塞任务可以为不阻塞并发队列的操作任务,也就是在同一时刻,并发队列可以并发执行多个非阻塞任务。
在本公开实施例中,任务执行状态信息可以包括以下三种情况:(1)文件中不存在正在执行的操作任务,可以记为none;(2)文件中存在正在执行的非阻塞任务,可以记为normal,非阻塞任务的操作任务数量可以记为N,其中,N为大于等于1的正整数;(3)文件中存在正在执行的阻塞任务,可以记为barrier,阻塞任务的操作任务数量为1。
这里,获取的文件的任务执行状态信息可以为在文件中正在执行的操作任务执行完毕后,更新的任务执行状态信息。
在一种实施方式中,可以根据文件标识与任务执行状态信息的对应关系,以及待执行操作任务携带的文件标识,查找文件的初始任务执行状态信息。这里,文件的初始任务执行状态信息可以为文件中存在正在执行的操作任务时的任务执行状态信息。
这里,文件标识与任务执行状态信息的对应关系可以时预先生成的。在具体实施中,可以生成包含各个文件标识与任务执行状态信息的对应关系的目标词典workMap。目标词典中存储有所有正在执行操作任务的文件的文件标识和文件标识对应的任务执行状态信息。
若没有查找到待执行操作对应的文件的初始任务执行状态信息,可以表明执行完文件下的所有操作任务后,该文件的文件标识与任务执行状态信息的对应关系被删除,或者针对该文件未执行过操作任务,未建立过该文件的文件标识与任务执行状态信息的对应关系。此时,可以初始化一个新的任务执行状态,初始化的任务执行状态信息可以指示不存在正在执行的操作任务。此时可以将待执行操作任务派发到文件对应的并发队列中执行,并根据待执行操作任务的第二任务类型,对初始化的任务执行状态信息进行更新。在具体实施中,当待执行操作任务的第二任务类型为阻塞任务时,可以将初始化的任务执行状态信息更新为存在正在执行的阻塞任务;当待执行操作任务的第二任务类型为非阻塞任务时,可以将初始化的任务执行状态信息更新为存在正在执行的非阻塞任务、且非阻塞操作任务的操作任务数量等于1。
若查找到待执行操作对应的文件的初始任务执行状态信息,可以在正在执行的操作任务执行完毕之后,更新初始任务执行状态信息。在具体实施中,可以根据正在执行的操作任务的任务类型和操作任务数量,更新初始任务执行状态信息,具体可以包括以下三种情况:
(一)若初始任务执行状态信息指示存在正在执行的非阻塞任务、且非阻塞操作任务的操作任务数量大于1,则将初始任务执行状态信息指示的操作任务数量减1。
(二)若初始任务执行状态信息指示存在正在执行的非阻塞任务、且非阻塞操作任务的操作任务数量等于1,则将初始任务执行状态信息更新为指示文件中不存在正在执行的操作任务。
(三)若初始任务执行状态信息指示存在正在执行的阻塞任务,则将初始任务执行状态信息更新为指示文件中不存在正在执行的操作任务。
在情况(一)中,若初始任务执行状态信息指示存在正在执行的非阻塞任务、且非阻塞操作任务的操作任务数量大于1,也就是当前正在执行的非阻塞任务不止一个。在执行完所有的非操作任务之前,每当执行完正在执行的一个非操作任务后,还存在正在执行的非阻塞任务,此时可以把初始任务执行状态信息指示的操作任务数量减1。
在情况(二)中,若初始任务执行状态信息指示存在正在执行的非阻塞任务、且非阻塞操作任务的操作任务数量等于1,也就是当前正在执行的非阻塞任务只有一个,执行完该非阻塞任务之后,不存在任何操作任务,因此可以将初始任务执行状态信息更新为文件中不存在正在执行的操作任务。
在情况(三)中,若初始任务执行状态信息指示存在正在执行的阻塞任务,执行完该阻塞任务后,不存在任何操作任务,因此可以将初始任务执行状态信息更新为文件中不存在正在执行的操作任务。
更新后的初始任务执行状态信息即前文所述的获取的任务执行状态信息。接下来,可以根据获取的任务执行状态信息、以及文件对应的待执行操作任务的第二任务类型,确定对待执行操作任务的调度结果,具体可以包括以下情况:
(a)若任务执行状态信息指示不存在正在执行的操作任务,则将待执行操作任务派发到文件的并发队列;并发队列中的待执行操作任务被同步执行。
(b)若任务执行状态信息指示存在正在执行的非阻塞任务、且待执行操作任务为非阻塞任务,则将待执行操作任务派发到文件的并发队列。
(c)若任务执行状态信息指示存在正在执行的非阻塞任务、且待执行操作任务为阻塞任务,则将待执行操作任务缓存到待派发队列中;其中,待派发队列中的待执行操作任务,在正在执行的多个阻塞操作任务执行完毕后,派发到并发队列。
(d)若任务执行状态信息指示存在正在执行的阻塞任务,则将待执行操作任务缓存到待派发队列中。
在情况(a)中,若任务执行状态信息指示不存在正在执行的操作任务,在待执行操作任务为阻塞任务或非阻塞任务时,都可以派发到文件的并发队列中。
在情况(b)中,若任务执行状态信息指示存在正在执行的非阻塞任务、且待执行操作任务为非阻塞任务,也就是正在执行的非阻塞任务不影响待执行操作任务的执行,待执行操作任务也不会阻塞并发队列,此时,可以将待执行操作任务派发到文件的并发队列中。并发队列中的待执行操作任务与正在执行的非阻塞任务可以被同步执行。
在情况(c)中,若任务执行状态信息指示存在正在执行的非阻塞任务、且待执行操作任务为阻塞任务,也就是将待执行操作任务派发到并发队列的时候,会阻塞并发队列,因此需要在非阻塞任务执行完之后,才可以将阻塞任务派发到并发队列中,因此此时可以将待执行操作任务缓存到待派发队列中。待执行操作任务可以在待派发队列等待,直至在正在执行的多个非阻塞操作任务执行完毕后,才会被派发到并发队列中。
在情况(d)中,若任务执行状态信息指示存在正在执行的阻塞任务,也就是正在执行的阻塞任务正在阻塞并发队列,在待执行操作任务为阻塞任务或非阻塞任务时,待执行操作任务都无法被派发到并发队列中,因此此时可以将待执行操作任务缓存到待派发队列中。待执行操作任务可以在待派发队列等待,直至在正在执行的阻塞操作任务执行完毕后,才会被派发到并发队列中。
这里,将待执行操作任务缓存到待派发队列后,任务执行状态信息未发生变化,即所执行的操作任务的第一任务类型和操作任务数量未发生变化。将待执行操作任务派发到并发队列后,任务执行状态信息可以发生变化,即所执行的操作任务的第一任务类型和/或操作任务数量可能发生变化。
在一种实施方式中,若任务执行状态信息指示不存在正在执行的操作任务,则将待执行操作任务派发到文件的并发队列之后,任务执行状态信息的变化可以是由待执行操作任务的任务类型确定的,即:若待执行操作任务为阻塞任务,则将任务执行状态信息指示的正在执行的操作任务的第一任务类型更新为阻塞任务;或者,若待执行操作任务为非阻塞任务,则将任务执行状态信息指示的正在执行的操作任务的第一任务类型更新为非阻塞任务,以及将操作任务数量置为1。
也就是,将待执行操作任务派发到文件的并发队列之前,任务执行状态信息指示不存在正在执行的操作任务,将待执行操作任务派发到文件的并发队列之后,若待执行操作任务为阻塞任务,则任务执行状态信息指示的正在执行的操作任务的第一任务类型可以为执行操作任务的任务类型,即阻塞任务。
将待执行操作任务派发到文件的并发队列之前,任务执行状态信息指示不存在正在执行的操作任务,将待执行操作任务派发到文件的并发队列之后,若待执行操作任务为非阻塞任务,则任务执行状态信息指示的正在执行的操作任务的第一任务类型可以为执行操作任务的任务类型,即非阻塞任务,并且任务执行状态信息指示的操作任务数量为1。
在一种实施方式中,若任务执行状态信息指示存在正在执行的非阻塞任务、且待执行操作任务为非阻塞任务,则将待执行操作任务派发到并发队列之后,可以将任务执行状态信息指示的操作任务数量加1。
也就是,将待执行操作任务派发到并发队列之后,并发队列可以同步执行正在执行的非阻塞任务以及待执行操作任务,因此操作任务数量增加1,此时可以将任务执行状态信息指示的操作任务数量加1。
在一种实施方式中,将待执行操作任务派发到文件的并发队列之后,更新后的任务执行状态信息可以存储在包含各个文件标识与任务执行状态信息的对应关系的目标词典中。
在本公开实施例中,可以定义一个并发队列类,并发队列类可以利用并发队列执行操作任务,并通过目标词典存储正在执行操作任务的各个文件的文件标识与对应的更新后的任务执行状态信息。
如图3所示的另一种操作任务调度的流程示意图中,并发队列类可以按照文件的文件标识,将待执行操作任务派发到文件对应的并发队列中。这里每个文件可以分别对应一个并发队列。在每个文件的并发队列中,可以实现阻塞任务独占整个并发队列,在阻塞任务之前的非阻塞任务可以并发执行,在阻塞任务之后的非阻塞任务需要等待阻塞任务执行完毕后,再并发执行。各个文件的并发队列可以分别执行各自的操作任务,即不同并发队列之间,任一并发队列正在执行的阻塞任务不影响其它并发队列的非阻塞任务,并且多个并发队列的阻塞任务可以同时执行。
在文件中的任一待执行操作任务执行完毕后,可以更新文件的任务执行状态信息。在具体实施中,可以根据执行的待执行操作任务的任务类型和操作任务数量对任务执行状态进行更新。在一种实施方式中,更新文件的任务执行状态信息可以包括:
若任务执行状态信息指示存在正在执行的非阻塞任务、且非阻塞操作任务的操作任务数量大于1,则将任务执行状态信息指示的操作任务数量减1。
若任务执行状态信息指示存在正在执行的非阻塞任务、且非阻塞操作任务的操作任务数量等于1,则将任务执行状态信息更新为指示文件中不存在正在执行的操作任务。
若任务执行状态信息指示存在正在执行的阻塞任务,则将任务执行状态信息更新为指示文件中不存在正在执行的操作任务。
这里,在待执行操作任务执行完毕后,更新文件的任务执行状态信息的过程与前述在正在执行的操作任务执行完毕之后,更新初始任务执行状态信息的过程类似,具体过程可以参照前文,这里不再赘述。
在本公开实施例中,在上一操作任务执行完毕后,需要更新任务执行状态信息,在将下一操作任务派发到并发队列后,还需要更新任务执行状态信息。其中,在上一操作任务执行完毕后,可以根据上一操作任务的任务类型和操作任务数量更新任务执行状态信息;在下一操作任务派发到并发队列后,可以根据上一操作任务行完毕后任务执行状态信息所指示的任务类型和操作任务数量,以及下一操作任务的任务类型,更新任务执行状态信息。
本领域技术人员可以理解,在具体实施方式的上述方法中,各步骤的撰写顺序并不意味着严格的执行顺序而对实施过程构成任何限定,各步骤的具体执行顺序应当以其功能和可能的内在逻辑确定。
基于同一发明构思,本公开实施例中还提供了与操作任务调度方法对应的操作任务调度装置,由于本公开实施例中的装置解决问题的原理与本公开实施例上述操作任务调度方法相似,因此装置的实施可以参见方法的实施,重复之处不再赘述。
参照图4所示,为本公开实施例提供的一种操作任务调度装置的架构示意图,操作任务调度装置400包括:
执行模块401,用于针对多个文件,并行执行以下任务调度过程:
响应于所述文件满足操作任务调度条件,获取所述文件的任务执行状态信息;所述任务执行状态信息用于指示所述文件中是否存在正在执行的操作任务,以及在存在正在执行的操作任务的情况下,所执行的操作任务的第一任务类型和操作任务数量;所述操作任务的任务类型包括阻塞任务和非阻塞任务;
基于所述文件的任务执行状态信息,以及所述文件对应的待执行操作任务的第二任务类型,确定对所述待执行操作任务的调度结果。
执行模块401在执行基于所述文件的任务执行状态信息,以及所述文件对应的待执行操作任务的第二任务类型,确定对所述待执行操作任务的调度结果的步骤时,具体用于:
若所述任务执行状态信息指示不存在正在执行的操作任务,则将所述待执行操作任务派发到所述文件的并发队列;所述并发队列中的待执行操作任务被同步执行;
若所述任务执行状态信息指示存在正在执行的非阻塞任务、且所述待执行操作任务为非阻塞任务,则将所述待执行操作任务派发到所述并发队列;
若所述任务执行状态信息指示存在正在执行的非阻塞任务、且所述待执行操作任务为阻塞任务,则将所述待执行操作任务缓存到待派发队列中;其中,所述待派发队列中的待执行操作任务,在所述正在执行的多个阻塞操作任务执行完毕后,派发到所述并发队列;
若所述任务执行状态信息指示存在正在执行的阻塞任务,则将所述待执行操作任务缓存到所述待派发队列中。
在一种可选的实施方式中,所述装置还包括第一更新模块402,在执行模块401执行若所述任务执行状态信息指示不存在正在执行的操作任务,则将所述待执行操作任务派发到所述文件的并发队列的步骤之后,所述更新模块402用于:
若所述待执行操作任务为阻塞任务,则将所述任务执行状态信息指示的正在执行的操作任务的第一任务类型更新为所述阻塞任务;或者,
若所述待执行操作任务为非阻塞任务,则将所述任务执行状态信息指示的正在执行的操作任务的第一任务类型更新为所述非阻塞任务,以及将所述操作任务数量置为1。
在一种可选的实施方式中,所述装置还包括处理模块403,在执行模块401执行若所述任务执行状态信息指示存在正在执行的非阻塞任务、且所述待执行操作任务为非阻塞任务,则将所述待执行操作任务派发到所述并发队列的步骤之后,处理模块403用于:
将所述任务执行状态信息指示的所述操作任务数量加1。
在一种可选的实施方式中,所述装置还包括:
第二更新模块404:在所述文件中的任一待执行操作任务执行完毕后,更新所述文件的任务执行状态信息。
在一种可选的实施方式中,第二更新模块404,具体用于:
若所述任务执行状态信息指示存在正在执行的非阻塞任务、且所述非阻塞操作任务的操作任务数量大于1,则将所述任务执行状态信息指示的操作任务数量减1;
若所述任务执行状态信息指示存在正在执行的非阻塞任务、且所述非阻塞操作任务的操作任务数量等于1,则将所述任务执行状态信息更新为指示所述文件中不存在正在执行的操作任务;
若所述任务执行状态信息指示存在正在执行的阻塞任务,则将所述任务执行状态信息更新为指示所述文件中不存在正在执行的操作任务。
在一种可选的实施方式中,所述文件对应的待执行操作任务为从任务调度队列中、与该文件对应的子调度队列中提取的;
所述装置还包括:
确定模块405,用于响应于接收到待执行操作任务,确定所述待执行操作任务对应的目标文件的文件标识;
存储模块406,用于将所述待执行操作任务存储到任务调度队列中,与所述文件标识对应的子调度队列中;所述子调度队列中的各待执行操作任务按照接收时间的先后顺序依次排列。
关于装置中的各模块的处理流程、以及各模块之间的交互流程的描述可以参照上述方法实施例中的相关说明,这里不再详述。
基于同一技术构思,本公开实施例还提供了一种计算机设备。参照图5所示,为本公开实施例提供的计算机设备500的结构示意图,包括处理器501、存储器502、和总线503。其中,存储器502用于存储执行指令,包括内存5021和外部存储器5022;这里的内存5021也称内存储器,用于暂时存放处理器501中的运算数据,以及与硬盘等外部存储器5022交换的数据,处理器501通过内存5021与外部存储器5022进行数据交换,当计算机设备500运行时,处理器501与存储器502之间通过总线503通信,使得处理器501在执行以下指令:
针对多个文件,并行执行以下任务调度过程:
响应于所述文件满足操作任务调度条件,获取所述文件的任务执行状态信息;所述任务执行状态信息用于指示所述文件中是否存在正在执行的操作任务,以及在存在正在执行的操作任务的情况下,所执行的操作任务的第一任务类型和操作任务数量;所述操作任务的任务类型包括阻塞任务和非阻塞任务;
基于所述文件的任务执行状态信息,以及所述文件对应的待执行操作任务的第二任务类型,确定对所述待执行操作任务的调度结果。
本公开实施例还提供一种计算机可读存储介质,该计算机可读存储介质上存储有计算机程序,该计算机程序被处理器运行时执行上述方法实施例中所述的操作任务调度方法的步骤。其中,该存储介质可以是易失性或非易失的计算机可读取存储介质。
本公开实施例还提供一种计算机程序产品,该计算机产品承载有程序代码,所述程序代码包括的指令可用于执行上述方法实施例中所述的操作任务调度方法的步骤,具体可参见上述方法实施例,在此不再赘述。
其中,上述计算机程序产品可以具体通过硬件、软件或其结合的方式实现。在一个可选实施例中,所述计算机程序产品具体体现为计算机存储介质,在另一个可选实施例中,计算机程序产品具体体现为软件产品,例如软件开发包(Software Development Kit,SDK)等等。
所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的系统和装置的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。在本公开所提供的几个实施例中,应该理解到,所揭露的系统、装置和方法,可以通过其它的方式实现。以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,又例如,多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些通信接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本公开各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。
所述功能如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个处理器可执行的非易失的计算机可读取存储介质中。基于这样的理解,本公开的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本公开各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(Read-OnlyMemory,ROM)、随机存取存储器(Random Access Memory,RAM)、磁碟或者光盘等各种可以存储程序代码的介质。
最后应说明的是:以上所述实施例,仅为本公开的具体实施方式,用以说明本公开的技术方案,而非对其限制,本公开的保护范围并不局限于此,尽管参照前述实施例对本公开进行了详细的说明,本领域的普通技术人员应当理解:任何熟悉本技术领域的技术人员在本公开揭露的技术范围内,其依然可以对前述实施例所记载的技术方案进行修改或可轻易想到变化,或者对其中部分技术特征进行等同替换;而这些修改、变化或者替换,并不使相应技术方案的本质脱离本公开实施例技术方案的精神和范围,都应涵盖在本公开的保护范围之内。因此,本公开的保护范围应以所述权利要求的保护范围为准。

Claims (10)

1.一种操作任务调度方法,其特征在于,包括:
针对多个文件,并行执行以下任务调度过程:
响应于所述文件满足操作任务调度条件,获取所述文件的任务执行状态信息;所述任务执行状态信息用于指示所述文件中是否存在正在执行的操作任务,以及在存在正在执行的操作任务的情况下,所执行的操作任务的第一任务类型和操作任务数量;所述操作任务的任务类型包括阻塞任务和非阻塞任务;
基于所述文件的任务执行状态信息,以及所述文件对应的待执行操作任务的第二任务类型,确定对所述待执行操作任务的调度结果。
2.根据权利要求1所述的方法,其特征在于,所述基于所述文件的任务执行状态信息,以及所述文件对应的待执行操作任务的第二任务类型,确定对所述待执行操作任务的调度结果,包括:
若所述任务执行状态信息指示不存在正在执行的操作任务,则将所述待执行操作任务派发到所述文件的并发队列;所述并发队列中的待执行操作任务被同步执行;
若所述任务执行状态信息指示存在正在执行的非阻塞任务、且所述待执行操作任务为非阻塞任务,则将所述待执行操作任务派发到所述并发队列;
若所述任务执行状态信息指示存在正在执行的非阻塞任务、且所述待执行操作任务为阻塞任务,则将所述待执行操作任务缓存到待派发队列中;其中,所述待派发队列中的待执行操作任务,在所述正在执行的多个阻塞操作任务执行完毕后,派发到所述并发队列;
若所述任务执行状态信息指示存在正在执行的阻塞任务,则将所述待执行操作任务缓存到所述待派发队列中。
3.根据权利要求2所述的方法,其特征在于,若所述任务执行状态信息指示不存在正在执行的操作任务,则将所述待执行操作任务派发到所述文件的并发队列之后,所述方法还包括:
若所述待执行操作任务为阻塞任务,则将所述任务执行状态信息指示的正在执行的操作任务的第一任务类型更新为所述阻塞任务;或者,
若所述待执行操作任务为非阻塞任务,则将所述任务执行状态信息指示的正在执行的操作任务的第一任务类型更新为所述非阻塞任务,以及将所述操作任务数量置为1。
4.根据权利要求2所述的方法,其特征在于,若所述任务执行状态信息指示存在正在执行的非阻塞任务、且所述待执行操作任务为非阻塞任务,则将所述待执行操作任务派发到所述并发队列之后,所述方法还包括:
将所述任务执行状态信息指示的所述操作任务数量加1。
5.根据权利要求1的方法,其特征在于,所述方法还包括:
在所述文件中的任一待执行操作任务执行完毕后,更新所述文件的任务执行状态信息。
6.根据权利要求5所述的方法,其特征在于,所述更新所述文件的任务执行状态信息,包括:
若所述任务执行状态信息指示存在正在执行的非阻塞任务、且所述非阻塞操作任务的操作任务数量大于1,则将所述任务执行状态信息指示的操作任务数量减1;
若所述任务执行状态信息指示存在正在执行的非阻塞任务、且所述非阻塞操作任务的操作任务数量等于1,则将所述任务执行状态信息更新为指示所述文件中不存在正在执行的操作任务;
若所述任务执行状态信息指示存在正在执行的阻塞任务,则将所述任务执行状态信息更新为指示所述文件中不存在正在执行的操作任务。
7.根据权利要求1所述的方法,其特征在于,所述文件对应的待执行操作任务为从任务调度队列中、与该文件对应的子调度队列中提取的;
所述方法还包括:
响应于接收到待执行操作任务,确定所述待执行操作任务对应的目标文件的文件标识;
将所述待执行操作任务存储到任务调度队列中,与所述文件标识对应的子调度队列中;所述子调度队列中的各待执行操作任务按照接收时间的先后顺序依次排列。
8.一种操作任务调度装置,其特征在于,包括:
执行模块,用于针对多个文件,并行执行以下任务调度过程:
响应于所述文件满足操作任务调度条件,获取所述文件的任务执行状态信息;所述任务执行状态信息用于指示所述文件中是否存在正在执行的操作任务,以及在存在正在执行的操作任务的情况下,所执行的操作任务的第一任务类型和操作任务数量;所述操作任务的任务类型包括阻塞任务和非阻塞任务;
基于所述文件的任务执行状态信息,以及所述文件对应的待执行操作任务的第二任务类型,确定对所述待执行操作任务的调度结果。
9.一种计算机设备,其特征在于,包括:处理器、存储器和总线,所述存储器存储有所述处理器可执行的机器可读指令,当计算机设备运行时,所述处理器与所述存储器之间通过总线通信,所述机器可读指令被所述处理器执行时执行如权利要求1至8任一项所述的操作任务调度方法的步骤。
10.一种计算机可读存储介质,其特征在于,该计算机可读存储介质上存储有计算机程序,该计算机程序被处理器运行时执行如权利要求1至5任一项所述的操作任务调度方法的步骤。
CN202310139015.5A 2023-02-10 2023-02-10 一种操作任务调度方法、装置、计算机设备及存储介质 Pending CN116126505A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202310139015.5A CN116126505A (zh) 2023-02-10 2023-02-10 一种操作任务调度方法、装置、计算机设备及存储介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202310139015.5A CN116126505A (zh) 2023-02-10 2023-02-10 一种操作任务调度方法、装置、计算机设备及存储介质

Publications (1)

Publication Number Publication Date
CN116126505A true CN116126505A (zh) 2023-05-16

Family

ID=86306239

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202310139015.5A Pending CN116126505A (zh) 2023-02-10 2023-02-10 一种操作任务调度方法、装置、计算机设备及存储介质

Country Status (1)

Country Link
CN (1) CN116126505A (zh)

Similar Documents

Publication Publication Date Title
CN107608773B (zh) 任务并发处理方法、装置及计算设备
CN100440175C (zh) 用于提供有效多字加载原子性的设备和方法
JP5647203B2 (ja) メモリページ管理
CN104065636B (zh) 数据处理方法和系统
CN109032533B (zh) 一种数据存储方法、装置和设备
CN106155596B (zh) 数据写入方法及装置
CN101788922A (zh) 基于辅助线程实现事务存储系统的方法和装置
CN111737002B (zh) 一种链式存储请求的处理方法、装置、设备及可读介质
CN108595346B (zh) 一种特征库文件管理方法和装置
CN111125040A (zh) 管理重做日志的方法、装置及存储介质
CN114327946A (zh) 共享内存访问控制方法、装置、电子设备及自动驾驶车辆
CN111416825A (zh) 线程间无锁日志管理方法和系统、终端、存储介质
CN113778652A (zh) 一种任务调度方法、装置、电子设备及存储介质
CN110750793A (zh) 一种漏洞扫描方法及装置
CN109656730B (zh) 一种访问缓存的方法和装置
CN110737504A (zh) 一种深度学习模型训练容错方法、系统、终端及存储介质
CN109298888B (zh) 队列的数据存取方法及装置
US20140320498A1 (en) Terminal device, information processing method, and computer program product
CN106170013A (zh) 一种基于Redis的Kafka消息唯一性方法
CN112000670B (zh) 一种多线程程序数据统一管理方法、系统及电子设备
US10101999B2 (en) Memory address collision detection of ordered parallel threads with bloom filters
CN110706108B (zh) 在区块链中并发执行交易的方法和装置
CN116126505A (zh) 一种操作任务调度方法、装置、计算机设备及存储介质
CN107203339B (zh) 一种数据存储方法及装置
CN115774724A (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