本技术实施例涉及线程数据处理,尤其涉及一种多线程数据处理方法、装置、设备及存储介质。
背景技术:
1、伴随着大数据的快速增长,需求也变得越来越复杂,多线程并发传输、计算、处理和存储已经成为基本要求。
2、传统的自动化任务多线程的执行流程是固定的,对于大的流程改动,需要通过修改代码和重新编译才能实现。
3、传统的多线程数据处理方式,线程类型仅按照具体任务划分,线程之间是平等关系,通过加锁实现线程之间的互斥和同步。通过在所有需要对公共资源进行并发访问的地方进行加锁,随着任务线程类型和数量的增加,容易出现大量的锁争夺,导致程序性能受到影响,流程控制逻辑阻塞,乃至产生严重卡顿。
技术实现思路
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、本技术实施例根据用户输入的场景选择信号,确定目标场景类型,根据目标场景类型和预设的流程配置,生成对应的目标流程,目标流程中的主线程根据预设的流程配置生成对应的工序线程和对应的任务对象,主线程将任务对象按照预设的次序放置于对应的工序线程中执行,所有工序线程执行完毕时,完成目标流程的执行。采用上述技术手段,可以通过主线程将任务对象按照预设的次序放置于对应的工序线程中执行,以完成目标流程的执行,以此可避免多线程数据处理的程序性能较差的问题,优化程序性能,提升计算资源的利用率。此外,根据用户的输入场景选择信号生成对应的目标流程,避免将执行流程固化,提高流程切换的灵活性,进一步提升计算资源的利用率。