本公开涉及计算机,具体而言,涉及一种操作任务调度方法、装置、计算机设备及存储介质。
背景技术:
1、在计算机领域,交换内存数据与磁盘文件数据是非常常见的场景。例如在移动端的应用程序进行持久化数据的过程中,需要频繁交互内存数据与磁盘文件数据,也就是需要频繁执行读写操作。
2、在针对磁盘文件执行读写操作时,会出现读写操作冲突的情况,比如,线程1和线程2并发执行读写操作,线程1读取文件内容时,线程2已经通过写操作删除了文件内容,此时就会导致线程1读操作出错。如果为了避免读写操作冲突,采用串行队列的方式对磁盘文件执行读写操作时,同一时间只能执行一个操作,会极大地影响对整个磁盘文件的读写效率。
技术实现思路
1、本公开实施例至少提供一种操作任务调度方法、装置、计算机设备及存储介质。
2、第一方面,本公开实施例提供了一种操作任务调度方法,包括:
3、针对多个文件,并行执行以下任务调度过程:
4、响应于所述文件满足操作任务调度条件,获取所述文件的任务执行状态信息;所述任务执行状态信息用于指示所述文件中是否存在正在执行的操作任务,以及在存在正在执行的操作任务的情况下,所执行的操作任务的第一任务类型和操作任务数量;所述操作任务的任务类型包括阻塞任务和非阻塞任务;
5、基于所述文件的任务执行状态信息,以及所述文件对应的待执行操作任务的第二任务类型,确定对所述待执行操作任务的调度结果。
6、一种可选的实施方式中,所述基于所述文件的任务执行状态信息,以及所述文件对应的待执行操作任务的第二任务类型,确定对所述待执行操作任务的调度结果,包括:
7、若所述任务执行状态信息指示不存在正在执行的操作任务,则将所述待执行操作任务派发到所述文件的并发队列;所述并发队列中的待执行操作任务被同步执行;
8、若所述任务执行状态信息指示存在正在执行的非阻塞任务、且所述待执行操作任务为非阻塞任务,则将所述待执行操作任务派发到所述并发队列;
9、若所述任务执行状态信息指示存在正在执行的非阻塞任务、且所述待执行操作任务为阻塞任务,则将所述待执行操作任务缓存到待派发队列中;其中,所述待派发队列中的待执行操作任务,在所述正在执行的多个阻塞操作任务执行完毕后,派发到所述并发队列;
10、若所述任务执行状态信息指示存在正在执行的阻塞任务,则将所述待执行操作任务缓存到所述待派发队列中。
11、一种可选的实施方式中,若所述任务执行状态信息指示不存在正在执行的操作任务,则将所述待执行操作任务派发到所述文件的并发队列之后,所述方法还包括:
12、若所述待执行操作任务为阻塞任务,则将所述任务执行状态信息指示的正在执行的操作任务的第一任务类型更新为所述阻塞任务;或者,
13、若所述待执行操作任务为非阻塞任务,则将所述任务执行状态信息指示的正在执行的操作任务的第一任务类型更新为所述非阻塞任务,以及将所述操作任务数量置为1。
14、一种可选的实施方式中,若所述任务执行状态信息指示存在正在执行的非阻塞任务、且所述待执行操作任务为非阻塞任务,则将所述待执行操作任务派发到所述并发队列之后,所述方法还包括:
15、将所述任务执行状态信息指示的所述操作任务数量加1。
16、一种可选的实施方式中,所述方法还包括:
17、在所述文件中的任一待执行操作任务执行完毕后,更新所述文件的任务执行状态信息。
18、一种可选的实施方式中,所述更新所述文件的任务执行状态信息,包括:
19、若所述任务执行状态信息指示存在正在执行的非阻塞任务、且所述非阻塞操作任务的操作任务数量大于1,则将所述任务执行状态信息指示的操作任务数量减1;
20、若所述任务执行状态信息指示存在正在执行的非阻塞任务、且所述非阻塞操作任务的操作任务数量等于1,则将所述任务执行状态信息更新为指示所述文件中不存在正在执行的操作任务;
21、若所述任务执行状态信息指示存在正在执行的阻塞任务,则将所述任务执行状态信息更新为指示所述文件中不存在正在执行的操作任务。
22、一种可选的实施方式中,所述文件对应的待执行操作任务为从任务调度队列中、与该文件对应的子调度队列中提取的;
23、所述方法还包括:
24、响应于接收到待执行操作任务,确定所述待执行操作任务对应的目标文件的文件标识;
25、将所述待执行操作任务存储到任务调度队列中,与所述文件标识对应的子调度队列中;所述子调度队列中的各待执行操作任务按照接收时间的先后顺序依次排列。
26、第二方面,本公开实施例还提供一种操作任务调度装置,包括:
27、执行模块,用于针对多个文件,并行执行以下任务调度过程:
28、响应于所述文件满足操作任务调度条件,获取所述文件的任务执行状态信息;所述任务执行状态信息用于指示所述文件中是否存在正在执行的操作任务,以及在存在正在执行的操作任务的情况下,所执行的操作任务的第一任务类型和操作任务数量;所述操作任务的任务类型包括阻塞任务和非阻塞任务;
29、基于所述文件的任务执行状态信息,以及所述文件对应的待执行操作任务的第二任务类型,确定对所述待执行操作任务的调度结果。
30、第三方面,本公开实施例还提供一种计算机设备,包括:处理器、存储器和总线,所述存储器存储有所述处理器可执行的机器可读指令,当计算机设备运行时,所述处理器与所述存储器之间通过总线通信,所述机器可读指令被所述处理器执行时执行上述第一方面,或第一方面中任一种可选的实施方式中的步骤。
31、第四方面,本公开实施例还提供一种计算机可读存储介质,该计算机可读存储介质上存储有计算机程序,该计算机程序被处理器运行时执行上述第一方面,或第一方面中任一种可选的实施方式中的步骤。
32、本公开实施例提供的操作任务调度方法,可以针对多个文件,并行执行任务调度过程,从而可以实现多个文件之间并发调度各自的读写操作,提高执行读写操作的效率。另外,在任务调度过程中,通过文件对应的任务执行状态信息可以标识文件对应的并发队列当前执行操作任务的状态,例如当前为阻塞状态或是非阻塞状态,进而可以结合待执行操作任务的任务类型(包括阻塞任务和非阻塞任务),进行操作任务的调度,比如,当前正在执行针对某个文件的写操作(阻塞任务)的情况下,就不进行其它操作的调度,当前正在执行针对该文件的读操作(非阻塞任务)的情况下,就可以派发其它的读操作任务,也即进行多个读操作任务的并发执行,从而可以避免出现任务冲突的情况,并且同时提高操作效率。
33、为使本公开的上述目的、特征和优点能更明显易懂,下文特举较佳实施例,并配合所附附图,作详细说明如下。
1.一种操作任务调度方法,其特征在于,包括:
2.根据权利要求1所述的方法,其特征在于,所述基于所述文件的任务执行状态信息,以及所述文件对应的待执行操作任务的第二任务类型,确定对所述待执行操作任务的调度结果,包括:
3.根据权利要求2所述的方法,其特征在于,若所述任务执行状态信息指示不存在正在执行的操作任务,则将所述待执行操作任务派发到所述文件的并发队列之后,所述方法还包括:
4.根据权利要求2所述的方法,其特征在于,若所述任务执行状态信息指示存在正在执行的非阻塞任务、且所述待执行操作任务为非阻塞任务,则将所述待执行操作任务派发到所述并发队列之后,所述方法还包括:
5.根据权利要求1的方法,其特征在于,所述方法还包括:
6.根据权利要求5所述的方法,其特征在于,所述更新所述文件的任务执行状态信息,包括:
7.根据权利要求1所述的方法,其特征在于,所述文件对应的待执行操作任务为从任务调度队列中、与该文件对应的子调度队列中提取的;
8.一种操作任务调度装置,其特征在于,包括:
9.一种计算机设备,其特征在于,包括:处理器、存储器和总线,所述存储器存储有所述处理器可执行的机器可读指令,当计算机设备运行时,所述处理器与所述存储器之间通过总线通信,所述机器可读指令被所述处理器执行时执行如权利要求1至8任一项所述的操作任务调度方法的步骤。
10.一种计算机可读存储介质,其特征在于,该计算机可读存储介质上存储有计算机程序,该计算机程序被处理器运行时执行如权利要求1至5任一项所述的操作任务调度方法的步骤。