本发明涉及数据读写,具体涉及异步读写方法、装置、计算机设备及存储介质。
背景技术:
1、异步i/o(input/output,输入/输出)是一种支持数据传输完成前允许其他计算的i/o方式,在发起i/o请求后立即返回,等到内核将i/o请求完成后,才以某种形式通知应用。想要实现异步i/o,通常可以采用将文件读写模式设置为非堵塞(non-blocking)模式的方式,或者采用select()接口的方式。然而采用上述两种方式,i/o请求者还需要对i/o的返回进行处理,不管是采用通知还是同步等待的方式来获取i/o的返回,都需要占据一定的资源消耗量,增加请求处理流程,不适合大量并发的场景。
技术实现思路
1、有鉴于此,本发明提供了一种异步读写方法、装置、计算机设备及存储介质,以解决大量并发的情况下,任务发起端资源消耗量大,处理效率低的问题。
2、第一方面,本发明提供了一种异步读写方法,该方法包括:
3、基于读写任务请求中包含的任务,分别建立任务对应的目标读写任务;
4、将目标读写任务放入目标读写事件中;目标读写任务与目标读写事件一一对应;
5、基于触发数据集,确定目标读写事件的状态;触发数据集中包含处于触发状态的读写事件的触发数据;
6、当目标读写事件的状态为触发状态时,基于目标读写事件,处理目标读写事件对应的目标读写任务。
7、如此,可以在目标读写事件触发时,直接根据目标读写事件对读写任务请求进行处理,而不需要将目标读写事件中的数据返回给任务发起端再由任务发起端进行处理,从而提高了处理效率,减少资源消耗量。
8、在一种可选的实施方式中,基于读写任务请求中包含的任务,分别建立任务对应的目标读写任务,包括:
9、确定读写任务请求中每个任务的任务配置信息;
10、基于每个任务的任务配置信息,分别建立每个任务对应的目标读写任务。
11、在一种可选的实施方式中,基于每个任务的任务配置信息,分别建立每个任务对应的目标读写任务,包括:
12、将任务的任务标识信息,确定为任务对应的目标读写任务的目标标识信息;
13、将任务的任务回调函数,确定为任务对应的目标读写任务的目标回调函数。
14、如此,可以将读写任务请求的相关信息同步到目标读写任务中,通过目标读写任务实现对读写任务请求的响应与处理。
15、在一种可选的实施方式中,将目标读写任务放入目标读写事件中,包括:
16、确定目标读写任务对应的目标读写事件;
17、将目标读写任务写入目标读写事件的事件数据中。
18、如此,可以将目标读写任务作为目标读写事件的事件数据的一部分,在目标读写事件触发,获取到目标读写事件的事件数据时,通过事件数据中包含的目标读写任务对事件数据进行处理,从而完成对读写任务请求的响应与处理。
19、在一种可选的实施方式中,确定目标读写任务对应的目标读写事件,包括:
20、将目标读写任务的目标标识信息,作为目标读写事件的事件标识信息;
21、确定目标读写事件的事件类型信息。
22、如此,可以通过目标读写任务的目标标识信息和目标读写事件的事件标识信息,将目标读写任务与目标读写事件对应起来。
23、在一种可选的实施方式中,该方法,还包括:
24、基于任务控制函数,关联任务实例和目标读写任务,以将目标读写事件添加到任务实例的事件集合中。
25、在一种可选的实施方式中,基于任务控制函数,关联任务实例和目标读写任务,以将目标读写事件添加到任务实例的事件集合中,包括:
26、将任务控制函数中实例标识设置为任务实例的实例标识信息;
27、将任务控制函数中任务标识设置为目标读写任务的目标标识信息;
28、将任务控制函数中操作参数设置为添加事件对应的值;
29、调用任务控制函数,以关联任务实例和目标读写任务,并将目标读写事件添加到任务实例的事件集合中。
30、如此,可以通过任务控制函数,将任务实例和目标读写任务关联起来,从而将目标读写事件添加到任务实例的事件集合中。
31、在一种可选的实施方式中,基于触发数据集,确定所述目标读写事件的状态,包括:
32、获取触发数据集;
33、当触发数据集中,存在触发数据中事件标识信息与目标读写任务的目标标识信息一致时,确定目标读写事件的状态为触发状态。
34、如此,可以根据事件标识信息,从触发数据集中确定出是否处于触发状态的读写事件中是否包含目标读写事件。
35、在一种可选的实施方式中,该方法,还包括:
36、当目标读写事件的事件数据中写入待处理数据时,将目标读写事件的事件类型信息和事件标识信息,作为目标读写事件的触发数据;
37、将目标读写事件的触发数据加入触发数据集。
38、如此,可以在目标读写事件中写入待处理数据时,触发目标读写事件。
39、在一种可选的实施方式中,将目标读写事件的触发数据加入触发数据集之后,还包括:
40、将目标读写事件中的事件类型信息清除。
41、在一种可选的实施方式中,基于目标读写事件,处理目标读写事件对应的读写任务请求,包括:
42、获取目标读写事件的事件数据;
43、从事件数据中取出目标读写任务和待处理数据;
44、基于目标读写任务,对待处理数据进行处理。
45、如此,可以在目标读写事件触发时,通过事件数据中包含的目标读写任务对待处理数据进行处理,不需要将待处理数据取出并回传给任务发起端,从而提高了处理效率。
46、在一种可选的实施方式中,基于目标读写任务,对待处理数据进行处理,包括:
47、获取目标读写任务中的目标回调函数;
48、调用目标回调函数,对待处理数据进行处理。
49、如此,可以按照读写任务请求对应的目标回调函数,对待处理数据进行处理,从而按照读写任务请求的需求完成数据处理。
50、在一种可选的实施方式中,基于目标读写事件,处理读写任务请求之后,还包括:
51、当读写任务请求的响应次数达到预设响应次数时,解除任务实例和目标读写任务的关联。
52、在一种可选的实施方式中,解除任务实例和目标读写任务的关联,包括:
53、将任务控制函数中操作参数设置为删除事件对应的值;
54、调用任务控制函数,以解除任务实例和目标读写任务的关联,并将目标读写事件从任务实例的事件集合中删除。
55、在一种可选的实施方式中,基于目标读写事件,处理读写任务请求之后,还包括:
56、当读写任务请求的响应次数未达到预设响应次数时,对目标读写事件进行修改,以补充目标读写事件中的事件类型信息。
57、在一种可选的实施方式中,对目标读写事件进行修改,以补充目标读写事件中的事件类型信息,包括:
58、确定目标读写事件的事件类型信息;
59、将任务控制函数中操作参数设置为修改事件对应的值;
60、调用任务控制函数,对目标读写事件进行修改,以补充目标读写事件中的事件类型信息。
61、如此,可以在读写任务请求的响应次数达到需求的预设响应次数时,再解除任务实例和目标读写任务的关联,避免反复在任务实例和目标读写任务之间建立、解除关联关系,从而提高处理效率。
62、在一种可选的实施方式中,该方法,还包括:
63、当任务等待函数返回第一预设值时,确定读写任务请求未响应。
64、在一种可选的实施方式中,该方法,还包括:
65、当读写任务请求中每个任务对应的目标读写任务均处理完成时,确定读写任务请求响应完成。
66、如此,可以将读写任务请求拆分成多个任务,对读写任务请求中包含的任务分别进行处理,当读写任务请求中的每个任务都处理完成时确定读写任务请求响应完成,而不再需要读写任务请求一直占据进程等待数据的返回和处理,从而实现读写任务请求的异步响应。
67、第二方面,本发明提供了一种异步读写装置,该装置包括:
68、目标读写任务建立模块,用于基于读写任务请求中包含的任务,分别建立任务对应的目标读写任务;
69、目标读写事件写入模块,用于将目标读写任务放入目标读写事件中;目标读写任务与目标读写事件一一对应;
70、读写事件状态确定模块,用于基于触发数据集,确定目标读写事件的状态;触发数据集中包含处于触发状态的读写事件的触发数据;
71、读写任务请求处理模块,用于当目标读写事件的状态为触发状态时,基于目标读写事件,处理目标读写事件对应的目标读写任务。
72、第三方面,本发明提供了一种计算机设备,包括:存储器和处理器,存储器和处理器之间互相通信连接,存储器中存储有计算机指令,处理器通过执行计算机指令,从而执行上述第一方面或其对应的任一实施方式的异步读写方法。
73、第四方面,本发明提供了一种计算机可读存储介质,该计算机可读存储介质上存储有计算机指令,计算机指令用于使计算机执行上述第一方面或其对应的任一实施方式的异步读写方法。