一种多线程控制方法、装置、设备和存储介质与流程

文档序号:31568594发布日期:2022-09-20 21:33阅读:80来源:国知局
一种多线程控制方法、装置、设备和存储介质与流程

1.本发明涉及计算机控制技术领域,尤其涉及一种多线程控制方法、装置、设备和存储介质。


背景技术:

2.机器人执行作业程序过程中,对于任务并行执行的特性,可以基于lua(程序设计语言)方案扩展实现脚本多线程,也可以通过编写自定义解析器实现多线程,但这些方法依赖于特定的技术,存在一定的技术门槛且可能涉及整个解析器的重构。


技术实现要素:

3.本发明提供了一种多线程控制方法、装置、设备和存储介质,以实现多线程执行并行解析得到的解析指令,简化多线程控制方法的实现过程。
4.根据本发明的一方面,提供了一种多线程控制方法,该方法包括:
5.在通过主线程解析第一源代码文件的过程中,所述主线程检测到所述子线程创建代码,并创建子线程;
6.通过子线程解析与所述子线程创建代码关联的第二源代码文件;
7.执行解析得到的解析指令。
8.根据本发明的另一方面,提供了一种一种多线程控制装置,其特征在于,包括:
9.线程创建模块,用于在通过主线程解析第一源代码文件的过程中,所述主线程检测到所述子线程创建代码,并创建子线程;
10.子线程解析模块,用于通过子线程解析与所述子线程创建代码关联的第二源代码文件;
11.指令执行模块,用于执行解析得到的解析指令。
12.根据本发明的另一方面,提供了一种电子设备,所述电子设备包括:
13.至少一个处理器;以及
14.与所述至少一个处理器通信连接的存储器;其中,
15.所述存储器存储有可被所述至少一个处理器执行的计算机程序,所述计算机程序被所述至少一个处理器执行,以使所述至少一个处理器能够执行本发明任一实施例所述的多线程控制方法。
16.根据本发明的另一方面,提供了一种计算机可读存储介质,所述计算机可读存储介质存储有计算机指令,所述计算机指令用于使处理器执行时实现本发明任一实施例所述的多线程控制方法。
17.根据本发明的另一方面,提供了一种计算机程序产品,所述计算机程序产品包括计算机程序,所述计算机程序在被处理器执行时实现本发明任一实施例所述的多线程控制方法。
18.本发明实施例的技术方案,通过在主线程解析第一源代码文件的过程中,若检测
到子线程创建代码,则创建子线程,实现在主线程解析过程中自动创建子线程,通过子线程解析与子线程创建代码关联的第二源代码文件,执行解析得到的解析指令,使子线程能够单独解析与子线程创建代码关联的第二源代码文件,从而实现子线程与主线程的并行解析,提高解析的效率,从而提高多线程控制的效率。
19.应当理解,本部分所描述的内容并非旨在标识本发明的实施例的关键或重要特征,也不用于限制本发明的范围。本发明的其它特征将通过以下的说明书而变得容易理解。
附图说明
20.为了更清楚地说明本发明实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
21.图1a是根据本发明实施例一提供的一种多线程控制方法的流程图;
22.图1b是根据本发明实施例一提供的一种基于多线程控制方法的机器人控制系统的结构示意图;
23.图2是根据本发明实施例二提供的一种多线程控制方法的流程图;
24.图3是根据本发明实施例三提供的一种多线程控制方法的流程图;
25.图4a是根据本发明实施例四提供的一种多线程控制方法中主线程的执行控制流程图;
26.图4b是根据本发明实施例四提供的一种多线程控制方法中子线程的执行控制流程图;
27.图5是根据本发明实施例五提供的一种多线程控制装置的结构示意图;
28.图6是实现本发明实施例的多线程控制方法的电子设备的结构示意图。
具体实施方式
29.为了使本技术领域的人员更好地理解本发明方案,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分的实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都应当属于本发明保护的范围。
30.需要说明的是,本发明的说明书和权利要求书及上述附图中的术语“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的本发明的实施例能够以除了在这里图示或描述的那些以外的顺序实施。此外,术语“包括”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、系统、产品或设备不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。
31.实施例一
32.图1a为本发明实施例一提供了一种多线程控制方法的流程图,本实施例可适用于
基于多线程控制方法实现机器人控制的情况。为了便于理解,首先对本发明实施例所涉及的一种基于多线程控制方法的机器人控制系统进行详细说明。图1b为本发明实施例一提供的一种基于多线程控制方法的机器人控制系统的结构示意图。如图1b所示,该机器人控制系统包括控制示教器模块、任务调度模块、脚本解析模块和控制模块。
33.其中,控制示教器模块用于生成源代码文件,或生成即时控制指令,并将源代码文件或即时控制指令发送至任务调度模块。源代码文件的数量至少为一个。示例性的,源代码文件可以包括第一源代码文件、第二源代码文件和第三源代码文件等。即时控制指令可以实现机器人控制系统的启动、停止、暂停、恢复和调试等控制,还可以实现对机器人jog控制(慢跑控制)、io控制(输入输出控制)或参数配置查询等功能。即时控制指令可以通过触屏、虚拟按键或编写源代码等方式生成。
34.任务调度模块用于接收源代码文件或即时控制指令,将源代码文件发送至脚本解析模块,以接收脚本解析模块中脚本解析器根据源代码文件生成的解析指令,并实现对解析指令和即时控制指令进行调度。对解析指令和即时控制指令进行调度,也可以理解为,任务调度模块将解析指令和即时控制指令发送至控制模块或任务调度模块。任务调度模块还可以用于执行发送至任务调度模块的指令。示例性的,发送至任务调度模块的指令可以是线程创建代码对应的指令,任务调度模块可以根据线程创建代码对应的指令创建子线程,并确定子线程在脚本解析模块中对应的脚本解析器。
35.脚本解析模块中包含至少一个脚本解析器,脚本解析器的数量可以根据需要解析的源代码文件的数量确定。脚本解析器用于接收源代码文件,对源代码文件进行解析,生成解析指令,并将解析指令发送至任务调度模块。各脚本解析器所用的解析方法相同,且各脚本解析器可以并行解析源代码文件。
36.控制模块用于执行任务调度模块发送的指令。具体的,控制模块可以用于对机器人进行运动控制或输入输出控制。示例性的,控制模块可以实现机器人移动轨迹规划或插补,以及电机、io模块(输入输出模块)等物理设备的通讯或交互。
37.通过本发明实施例提供的一种基于多线程控制方法的机器人控制系统,可以实现多脚本解析模块并行解析,提高解析效率,同时各脚本解析模块所用的解析方法相同,降低了脚本解析模块设置的复杂性,能够提高脚本解析模块使用的灵活性,从而提高多线程控制的效率和灵活性。
38.多线程控制方法可以由多线程控制装置来执行,该多线程控制装置可以采用硬件和/或软件的形式实现,该多线程控制装置可配置于电子设备中。如图1a所示,多线程控制方法包括:
39.s110、在通过主线程解析第一源代码文件的过程中,所述主线程检测到所述子线程创建代码,并创建子线程。
40.当一个程序启动时,就有一个进程被创建,与此同时一个线程也立刻运行,该线程通常叫做程序的主线程。也可以理解为,主线程是第一源代码文件开始解析时创建的线程。第一源代码文件是指主线程对应的源代码文件。在主线程中,可以通过主线程对应的脚本解析器对第一源代码文件进行解析。子线程创建代码是指创建子线程的代码。通过子线程创建代码可以创建子线程。子线程是指在主线程之外创建的可以独立运行的线程。通过主线程可以创建至少一个子线程。子线程的数量与第一源代码文件中子线程创建代码的数量
相同。可以理解的是,在主线程中,也可以通过设置子线程取消代码,以取消子线程。示例性的,子线程取消代码可以是thread_destroy(thread_handle)。
41.具体的,通过主线程对应的脚本解析器对第一源代码文件进行解析,在解析第一源代码文件的过程中,如果主线程对应的脚本解析器检测到子线程创建代码,根据子线程创建代码创建子线程,并在创建完成后继续对第一源代码文件进行解析,同时子线程在创建完成后开始运行。
42.s120、通过子线程解析与所述子线程创建代码关联的第二源代码文件。
43.第二源代码文件是指子线程对应的源代码文件。每一个子线程对应一个第二源代码文件。第二源代码文件与第一源代码文件可以使用相同的代码编程语言编辑。子线程创建代码关联的第二源代码文件可以通过子线程创建代码中的参数确定。具体的,子线程创建代码的参数可以是源代码文件的路径,也可以是源代码文件的名称等。示例性的,子线程创建代码可以是thread_handle=thread_create(“/path/to/thread/file.script”)。
44.具体的,根据子线程创建代码的参数,确定子线程创建代码关联的第二源代码文件。子线程通过子线程对应的脚本解析器对子线程创建代码对应的第二源代码文件进行解析。
45.s130、执行解析得到的解析指令。
46.解析指令是指源代码文件解析后生成的指令,源代码文件为第一源代码文件或第二源代码文件。具体的,可以根据解析指令所在线程的优先级执行解析得到的解析指令。解析指令所在线程的优先级可以根据实际情况进行设置。其中,解析指令所在线程的优先级是指子线程和主线程之间的优先级,示例性的,主线程的优先级高于子线程,先创建的子线程的优先级高于后创建的子线程。也可以根据解析得到解析指令的时序执行解析得到的解析指令。还可以根据解析指令对应的指令调度权限执行解析得到的解析指令根据指令调度权限可以确定解析指令是否能够执行,示例性的,拥有指令调度权限的解析指令可以执行,未拥有指令调度权限的解析指令无法执行。解析指令可以根据设置的规则获取指令调度权限。
47.本发明实施例的技术方案,通过在主线程解析第一源代码文件的过程中,若检测到子线程创建代码,则创建子线程,实现在主线程解析过程中自动创建子线程,通过子线程解析与子线程创建代码关联的第二源代码文件,执行解析得到的解析指令,使子线程能够单独解析与子线程创建代码关联的第二源代码文件,从而实现子线程与主线程的并行解析,提高解析的效率,从而提高多线程控制的效率。
48.实施例二
49.图2为本发明实施例二提供的一种多线程控制方法的流程图,本实施例在上述实施例的基础上,还包括:在目标线程检测到目标代码的情况下,通过所述目标线程跳过解析所述目标代码,所述目标代码包括下述至少一项:所述子线程创建代码和串行执行的指令对应的代码;其中,所述子线程的数量为至少一个,所述目标线程包括:在所述主线程和各所述子线程中确定的一个线程之外的全部线程。如图2所示,该方法包括:
50.s210、在通过主线程解析第一源代码文件的过程中,所述主线程检测到所述子线程创建代码,并创建子线程。
51.s220、通过子线程解析与所述子线程创建代码关联的第二源代码文件。
52.s230、在目标线程检测到目标代码的情况下,通过所述目标线程跳过解析所述目标代码,所述目标代码包括下述至少一项:所述子线程创建代码和串行执行的指令对应的代码;其中,所述子线程的数量为至少一个,所述目标线程包括:在所述主线程和各所述子线程中确定的一个线程之外的全部线程。
53.目标线程是指在解析过程中需要对代码进行跳过解析处理的线程。具体的,目标线程包括在主线程和各子线程中确定的一个线程之外的全部线程。确定的一个线程是指在解析过程中不需要对代码进行跳过解析处理的线程。示例性的,主线程解析第一源代码文件的过程中,检测到两个子线程创建代码,分别创建第一子线程和第二子线程,则确定的一个线程为主线程时,目标线程为第一子线程和第二子线程;确定的一个线程为第一子线程时,目标线程为主线程和第二子线程;确定的一个线程为第二子线程时,目标线程为主线程和第一子线程。子线程的数量为至少一个,则目标线程的数量为至少一个,具体的,目标线程的数量为子线程数量与主线程数量之和减一。
54.目标代码是指无法并行执行的指令对应的代码。可以理解的是,如果目标代码在目标线程中解析并执行,会造成多线程控制结果的不确定性。目标代码包括子线程创建代码和串行执行的指令对应的代码中的至少一项。串行执行的指令对应的代码可以包括动作控制指令和具有明显时序要求的指令对应的代码中的至少一项。其中,动作控制指令可以包括机器人动作控制指令。示例性的,串行执行的指令可以是直线运动指令对应的代码,也可以是圆弧运动指令对应的代码等。可以理解的是,在上一示例的基础上,基于多线程控制方法控制机器人的场景中,目标线程为第一子线程和第二子线程,第一子线程中的串行执行指令为直线运动指令,第二子线程中的串行执行指令为圆弧运动指令,如果第一子线程与第二子线程中的串行执行指令进行解析后,在执行过程中,机器人将无法确定执行直线运动动作或是圆弧运动动作,将造成机器人执行动作的混乱,影响机器人控制的安全性。
55.具体的,在目标线程对应的脚本解析器进行解析的过程中,如果检测到目标代码,脚本解析器将跳过解析目标代码。脚本解析器可以通过查表的方式检测目标代码,其中,表的内容可以是目标代码,也可以是目标代码的标识信息,脚本解析器通过标识信息检测目标代码。
56.s240、执行解析得到的解析指令。
57.本发明实施例的技术方案,能够在目标线程检测到目标代码时,跳过解析目标代码,可以保证目标代码只在主线程和子线程中的一个线程中进行解析,降低目标代码在多个线程中解析导致多线程控制出现错误的情况的发生概率,从而提高多线程控制的准确性。
58.在上述实施例的基础上,所述目标线程包括:全部所述子线程。
59.具体的,在本实施例中,可以仅在主线程中对目标代码进行解析,则目标线程为全部子线程,各子线程在检测到目标代码时跳过解析目标代码。
60.通过将目标线程确定为全部子线程,可以仅在主线程中解析目标代码,保证仅有主线程能够执行目标代码解析后的解析指令,从而提高了多线程控制的准确性。
61.此外,如果子线程为非目标线程,第一源代码文件和第二源代码文件中的目标代码全部无法解析,从而导致解析错误,此时第一源代码文件和第二源代码文件不能兼容仅通过主线程对目标代码进行解析的方式。
62.在上述实施例的基础上,所述主线程解析得到的解析指令包括下述至少一项:机器人动作控制指令、输入输出控制指令和任务调度控制指令,所述子线程解析得到的解析指令包括下述至少一项:输入输出控制指令和任务调度控制指令。
63.机器人动作控制指令是指控制机器人动作的指令。机器人动作控制指令包括运动控制指令和运动控制相关参数的设置指令等指令中的至少一项。示例性的,机器人动作指令可以包括直线运动指令、圆弧运动指令、关节运动指令等等运动控制指令;还可以是工具坐标系设置指令、用户坐标系设置指令、全局速度设置指令等等运动控制相关参数的设置指令。输入输出控制指令是指对机器人的输入输出设备或接口进行控制的指令,也可以称为io控制指令。任务调度控制指令是指在任务调度模块执行的指令。示例性的,任务调度控制指令可以是对线程的控制指令,如等待、程序暂停、程序恢复等;任务调度控制指令还可以是对线程的相关参数进行查询的指令,如时钟读取指令。
64.具体的,主线程解析得到的解析指令可以包括机器人动作控制指令、输入输出控制指令和任务调度控制指令中的至少一项。其中机器人动作指令属于串行执行的指令,则目标线程为全部子线程时,子线程解析得到的解析指令不包括机器人动作执行指令,具体的,子线程解析得到的解析指令包括输入输出控制指令和任务调度控制指令中的至少一项。
65.通过机器人动作控制指令仅在主线程解析得到,使机器人仅执行主线程解析得到的动作控制指令,从而避免机器人同时执行主线程和子线程的动作指令所造成的机器人动作错误的情况发生,提高多线程控制的准确性。
66.实施例三
67.图3为本发明实施例三提供的一种多线程控制方法的流程图,本实施例在上述实施例的基础上,将所述执行解析得到的解析指令,具体化为:在解析得到的解析指令中,获取指令调度权限对应的目标指令,发送至控制模块;暂停非调度指令对应的线程的解析操作,所述解析得到的解析指令包括目标指令和所述非调度指令;通过所述控制模块执行所述目标指令;释放指令调度权限,并建立新的指令调度权限与指令之间的对应关系,返回执行在解析得到的解析指令中,获取指令调度权限对应的目标指令的操作。如图3所示,该方法包括:
68.s310、在通过主线程解析第一源代码文件的过程中,所述主线程检测到所述子线程创建代码,并创建子线程。
69.s320、通过子线程解析与所述子线程创建代码关联的第二源代码文件。
70.s330、在解析得到的解析指令中,获取指令调度权限对应的目标指令,发送至控制模块。
71.解析得到的解析指令是指对第一源代码文件或第二源代码文件进行解析得到的解析指令。解析得到的解析指令可以包括一个指令,也可以包括多个指令。解析得到的解析指令中指令的数量可以根据实际情况进行设置。指令调度权限是指将解析得到的解析指令发送至控制模块,以使控制模块执行解析指令的权限。指令调度权限可以根据主线程和子线程之间的优先级进行分配,也可以根据实际情况设置指令调度权限的分配规则。目标指令是指得到指令调度权限的解析指令,也可以理解为目标指令是指与指令调度权限对应的解析指令,此时可以建立解析指令与指令调度权限之间的对应关系。控制模块串行接收目
标指令,也可以理解为,控制模块在同一时间只能接收一个目标指令。
72.具体的,第一源代码文件解析得到的解析指令或第二源代码文件解析得到的解析指令分别申请指令调度权限,得到指令调度权限的解析指令确定为目标指令,从而建立解析指令与指令调度权限之间的对应关系,并将目标指令发送至控制模块。
73.示例性的,主线程中第一源代码文件解析得到第一解析指令,子线程中第二源代码文件解析得到第二解析指令。若第一解析指令申请指令调度权限,且控制模块无目标指令接收,则第一解析指令可以得到指令调度权限,确定为目标指令,此时建立第一解析指令与指令调度权限之间的对应关系,并将目标指令发送至控制模块;若第二解析指令申请指令调度权限,且控制模块无目标指令接收,则第二解析指令可以得到指令调度权限,确定为目标指令,此时建立第二解析指令与指令调度权限之间的对应关系,并将目标指令发送至控制模块;若第一解析指令和第二解析指令同时申请指令调度权限,且控制模块无目标指令接收,则根据主线程与子线程的优先级确定第一解析指令和第二解析指令的优先级,优先级高的解析指令得到指令调度权限,确定为目标指令,此时建立优先级高的解析指令与指令调度权限之间的对应关系,并将目标指令发送至控制模块;若第一解析指令申请指令调度权限,且控制模块有目标指令接收,则第一解析指令持续等待申请指令调度权限,直到可以得到指令调度权限,确定为目标指令,此时建立第一解析指令与指令调度权限之间的对应关系,并将目标指令发送至控制模块;若第二解析指令申请指令调度权限,且控制模块有目标指令接收,则第二解析指令每间隔阈值时间申请一次指令调度权限,直到可以得到指令调度权限,确定为目标指令,此时建立第二解析指令与指令调度权限之间的对应关系,并将目标指令发送至控制模块,其中阈值时间可以根据实际情况进行设置。
74.s340、暂停非调度指令对应的线程的解析操作,所述解析得到的解析指令包括目标指令和所述非调度指令。
75.非调度指令是指未得到指令调度权限的解析指令。具体的,解析得到的解析指令中,得到指令调度权限的解析指令确定为目标指令,未得到指令权限的解析指令确定为非调度指令,非调度指令所在的线程将暂停解析操作,直至非调度指令得到指令调度权限并发送至控制模块后,恢复解析操作。
76.s350、通过所述控制模块执行所述目标指令
77.具体的,控制模块接收到目标指令后,执行目标指令。其中,控制模块串行执行目标指令。
78.s360、释放指令调度权限,并建立新的指令调度权限与指令之间的对应关系,返回执行在解析得到的解析指令中,获取指令调度权限对应的目标指令的操作。
79.新的指令调度权限与指令之间的对应关系是指非调度指令得到指令调度权限后重新形成的指令调度权限与指令之间的对应关系。具体的,控制模块执行目标指令后,目标指令释放指令调度权限,以使控制模块能够接收新的目标指令。释放指令调度权限后,非调度指令可以获取指令调度权限,以建立新的指令调度权限与指令之间的对应关系,并返回步骤s330,直至全部解析指令发送至控制模块。
80.可选的,也可以是目标指令在发送完成后释放指令调度权限,并建立新的指令调度权限对应的目标指令的操作,可以提高将目标指令发送至控制模块的效率,从而提高控制模块执行目标指令的效率。
81.本发明实施例的技术方案,通过在解析得到的解析指令中,获取指令调度权限对应的目标指令,发送至控制模块,能够使解析指令按照一定的顺序串行发送至控制模块,避免目标指令发送时产生拥堵,提高目标指令的发送效率,从而提高控制模块执行目标指令的准确性,通过暂停非调度指令对应的线程的解析操作,可以保证非调度指令及时获取指令调度权限,提高了非调度指令发送至控制模块的效率。
82.在上述实施例的基础上,还包括:获取即时控制指令;所述建立新的指令调度权限与指令之间的对应关系,包括:建立指令调度权限与所述即时控制指令之间的对应关系。
83.即时控制指令是指在线程运行过程中,对线程进行控制的指令。通过即时控制指令可以实现对线程的启动、停止、暂停、恢复和调试等控制。通过建立新的指令调度权限与即时控制指令之间的对应关系,可以确定得到指令调度权限的即时控制指令。
84.具体的,各线程在运行期间,获取即时控制指令,根据即时控制指令,建立指令调度权限与即时控制指令之间的对应关系。可以根据即时控制指令与解析得到的解析指令之间的优先级,建立指令调度权限与即时控制指令之间的对应关系。示例性的,在前述示例的基础上,即时控制指令的优先级高于解析得到的解析指令,获取到即时控制指令时,如果控制模块无目标指令接收,即时控制指令得到指令调度权限,建立指令调度权限与即时控制指令之间的对应关系;如果控制模块有目标指令接收,在控制模块接收完成后,即时控制指令得到指令调度权限,建立指令调度权限与即时控制指令之间的对应关系;如果即时控制指令与解析得到的解析指令同时申请指令调度权限,即时控制指令优先得到指令调度权限,建立指令调度权限与即时控制指令之间的对应关系。
85.通过获取即时控制指令,建立指令调度权限与即时控制指令之间的对应关系,保证即时控制指令能够优先执行,提高即时控制指令的执行效率,保证各线程能够对即时控制指令做出及时反应。
86.在上述实施例的基础上,所述主线程解析得到的解析指令和所述子线程解析得到的解析指令可相互独立执行。
87.独立执行是指主线程解析得到的解析指令与子线程解析得到解析指令之间无依赖关系,可以单独执行。也可以理解为第一源代码文件与第二源代码文件为独立作业文件。
88.通过主线程解析得到的解析指令和子线程解析得到的解析指令相互独立执行,降低了主线程和子线程之间的依赖关系,使子线程解析得到的解析指令可以在主线程中执行,从而提高多线程控制的灵活性。
89.可以理解的是,在主线程或子线程中,解析得到的解析指令需要按照在线程中解析的顺序执行。
90.进一步的,主线程解析得到的解析指令和所述子线程解析得到的解析指令可相互独立执行,使得第一源代码文件可以作为第二源代码在子线程中运行,第二源代码文件也可以作为第一源代码文件在主线程中运行。同时,第一源代码文件与第二源代码文件的解析方法相同,从而无需为第二源代码文件重新设置解析方法,简化了各线程的脚本解析器的设置复杂性,进而提高了多线程控制的灵活性。
91.实施例四
92.图4a为本发明实施例四提供的一种多线程控制方法中主线程的执行控制流程图。本发明实施例提供的执行控制流程图适用于实现机器人控制的情况,可以应用于基于多线
程控制方法的机器人控制系统中。如图4a所示,主线程的执行控制流程如下:
93.系统开始运行时,对机器人控制系统初始化。任务调度模块判断控制示教器模块是否有即时控制指令下发。如果有即时控制指令,则接收即时控制指令,即时控制指令申请指令调度权限,在即时控制指令获取到指令调度权限后,任务调度模块将即时控制指令发送至控制模块中,由控制模块执行即时控制指令,同时及时控制指令释放指令调度权限。如果没有即时控制指令,任务调度模块判断是否存在第一源代码文件。
94.如果存在第一源代码文件,则主线程对应的脚本解析器解析第一源代码文件得到解析指令。解析指令申请指令调度权限,在解析指令获得指令调度权限后,任务调度模块将解析指令发送至控制模块,由控制模块执行解析指令。第一源代码在解析过程中,判断是否有子线程创建代码解析得到的解析指令,如果有,根据子线程创建代码解析得到的解析指令创建子线程,并运行子线程,创建完成后,子线程创建代码解析得到的解析指令释放指令调度权限;如果没有,解析指令将直接释放指令调度权限。
95.在释放指令调度权限后,机器人根据控制模块执行的指令同步机器人的状态,并返回判断是否有即时控制指令的步骤。
96.可选的,子线程创建代码可以是thread_handle=thread_create(“/path/to/thread/file.script”)。在子线程创建代码中可以设置返回值,返回值可以是线程句柄,用以表示线程的状态。示例性的,线程的状态可以包括创建、执行中和执行完成等。通过线程句柄可以实现线程的取消、同步或暂停等控制操作。示例性的,当子线程创建失败(第二源代码文件的路径无法正常加载或子线程数量超出限制)时,返回错误码-1作为线程句柄,否则返回非负数字作为线程句柄。
97.可选的,在第一源代码文件可以设置子线程取消代码,以取消子线程。示例性的,子线程取消代码可以是thread_destroy(thread_handle),在执行子线程取消代码解析得到的解析指令后,子线程取消代码对应的子线程将立即终止运行,且子线程关联的信息将被任务调度模块收回,如果子线程取消代码对应的子线程不存在,则报错处理。子线程取消代码中的参数可以是子线程创建代码解析得到的解析指令在执行时返回的句柄,也可以是源代码文件的路径或名称等。
98.可选的,任务调度模块可以建立一个子线程列表,用于存储子线程中第二源文件代码解析后生成的解析指令,初始时为空且在程序执行结束后清空。脚本解析器在解析到子线程创建指令时,会由任务调度模块创建一个子线程并添加到线程列表中,同时创建另一个脚本解析器,并且与该线程句柄关联。
99.可选的,对于具有强制性的执行时序的指令,在主线程中可以通过同步代码实现主线程与子线程间的同步,示例性的,同步代码可以是:thread_join(thread_handle),其中,同步代码的参数可以是子线程的句柄。主线程在解析到同步代码时,需要实时查询该句柄所指定子线程的状态,直到子线程状态为执行完成后才继续解析。
100.可选的,为了便于多线程之间的数据交互,源代码文件可以采用global关键字声明全局变量。全局变量支持字符串、数组、浮点数、整形等多种基本数据类型,且全局变量存储于各线程均可访问的共享内存区。由于各线程涉及对全局变量的访问,针对全局变量提供关键临界区域的保护。可以理解的是,在各线程中任一线程访问全局变量时,其他所有的线程将处于等待状态,直到访问全局变量的线程完成访问,并退出关键临界区域。示例性
的,针对全局变量提供关键临界区域的保护的代码可以是:thread_enter_critical(),用于进入关键临界区域,也就是访问全局变量,thread_exit_critical(),用于退出关键临界区域,也就是访问全局变量完成。由于进入关键临界区域相当于独占运行权限,为保证其他线程能够正常运行,要求在进入与退出临界区域期间执行的指令尽量短。
101.图4b为本发明实施例四提供的一种多线程控制方法中子线程的执行控制流程图。如图4b所示,子线程的执行控制流程如下:
102.子线程创建后,进行子线程初始化。首先任务调度模块判断是否有即时控制指令实现对子线程的外部终止或暂停控制,如果有,则结束子线程,如果没有,根据子线程对应的脚本解析器对第二源代码文件进行解析,生成解析指令。解析指令申请指令调度权限,在获得指令调度权限后,任务调度模块将指令调度权限发送至控制模块,同时解析指令释放指令调度权限。任务调度模块判断子线程是否执行完成,也可以理解为判断第二源代码文件解析生成的解析指令是否全部发送至控制模块。如果是,则子线程结束,如果不是,子线程将返回判断是否有即时控制指令对子线程的外部终止或暂停控制的步骤。
103.本发明实施例的技术方案,通过在主线程解析第一源代码文件的过程中,若检测到子线程创建代码,则创建子线程,实现在主线程解析过程中自动创建子线程,通过子线程解析与子线程创建代码关联的第二源代码文件,执行解析得到的解析指令,使子线程能够单独解析与子线程创建代码关联的第二源代码文件,从而实现子线程与主线程的并行解析,提高解析的效率,从而提高多线程控制的效率。
104.实施例五
105.图5为本发明实施例五提供的一种多线程控制装置的结构示意图。如图5所示,该装置包括:线程创建模块501、子线程解析模块502和指令执行模块503。
106.其中,线程创建模块501,用于在通过主线程解析第一源代码文件的过程中,所述主线程检测到所述子线程创建代码,并创建子线程;
107.子线程解析模块502,用于通过子线程解析与所述子线程创建代码关联的第二源代码文件;
108.指令执行模块503,用于执行解析得到的解析指令。
109.本发明实施例的技术方案,通过在主线程解析第一源代码文件的过程中,若检测到子线程创建代码,则创建子线程,实现在主线程解析过程中自动创建子线程,通过子线程解析与子线程创建代码关联的第二源代码文件,执行解析得到的解析指令,使子线程能够单独解析与子线程创建代码关联的第二源代码文件,从而实现子线程与主线程的并行解析,提高解析的效率,从而提高多线程控制的效率。
110.可选的,该装置还包括:
111.代码跳过模块,用于在目标线程检测到目标代码的情况下,通过所述目标线程跳过解析所述目标代码,所述目标代码包括下述至少一项:所述子线程创建代码和串行执行的指令对应的代码;其中,所述子线程的数量为至少一个,所述目标线程包括:在所述主线程和各所述子线程中确定的一个线程之外的全部线程。
112.可选的,所述目标线程包括:全部所述子线程。
113.可选的,指令执行模块503,包括:
114.目标指令发送单元,用于在解析得到的解析指令中,获取指令调度权限对应的目
标指令,发送至控制模块;
115.解析暂停单元,用于暂停非调度指令对应的线程的解析操作,所述解析得到的解析指令包括目标指令和所述非调度指令;
116.目标指令执行单元,用于通过所述控制模块执行所述目标指令;
117.对应关系建立单元,用于释放指令调度权限,并建立新的指令调度权限与指令之间的对应关系,返回执行在解析得到的解析指令中,获取指令调度权限对应的目标指令的操作。
118.可选的,该装置还包括:
119.即时控制指令获取模块,用于获取即时控制指令;
120.对应关系建立单元,具体用于:
121.建立指令调度权限与所述即时控制指令之间的对应关系。
122.可选的,所述主线程解析得到的解析指令和所述子线程解析得到的解析指令可相互独立执行。
123.可选的,所述主线程解析得到的解析指令包括下述至少一项:机器人动作控制指令、输入输出控制指令和任务调度控制指令,所述子线程解析得到的解析指令包括下述至少一项:输入输出控制指令和任务调度控制指令。
124.本发明实施例所提供的多线程控制装置可执行本发明任意实施例所提供的多线程控制方法,具备执行方法相应的功能模块和有益效果。
125.实施例六
126.图6示出了可以用来实施本发明的实施例的电子设备10的结构示意图。电子设备旨在表示各种形式的数字计算机,诸如,膝上型计算机、台式计算机、工作台、个人数字助理、服务器、刀片式服务器、大型计算机、和其它适合的计算机。电子设备还可以表示各种形式的移动装置,诸如,个人数字处理、蜂窝电话、智能电话、可穿戴设备(如头盔、眼镜、手表等)和其它类似的计算装置。本文所示的部件、它们的连接和关系、以及它们的功能仅仅作为示例,并且不意在限制本文中描述的和/或者要求的本发明的实现。
127.如图6所示,电子设备10包括至少一个处理器11,以及与至少一个处理器11通信连接的存储器,如只读存储器(rom)12、随机访问存储器(ram)13等,其中,存储器存储有可被至少一个处理器执行的计算机程序,处理器11可以根据存储在只读存储器(rom)12中的计算机程序或者从存储单元18加载到随机访问存储器(ram)13中的计算机程序,来执行各种适当的动作和处理。在ram 13中,还可存储电子设备10操作所需的各种程序和数据。处理器11、rom 12以及ram 13通过总线14彼此相连。输入/输出(i/o)接口15也连接至总线14。
128.电子设备10中的多个部件连接至i/o接口15,包括:输入单元16,例如键盘、鼠标等;输出单元17,例如各种类型的显示器、扬声器等;存储单元18,例如磁盘、光盘等;以及通信单元19,例如网卡、调制解调器、无线通信收发机等。通信单元19允许电子设备10通过诸如因特网的计算机网络和/或各种电信网络与其他设备交换信息/数据。
129.处理器11可以是各种具有处理和计算能力的通用和/或专用处理组件。处理器11的一些示例包括但不限于中央处理单元(cpu)、图形处理单元(gpu)、各种专用的人工智能(ai)计算芯片、各种运行机器学习模型算法的处理器、数字信号处理器(dsp)、以及任何适当的处理器、控制器、微控制器等。处理器11执行上文所描述的各个方法和处理,例如多线
程控制方法。
130.在一些实施例中,多线程控制方法可被实现为计算机程序,其被有形地包含于计算机可读存储介质,例如存储单元18。在一些实施例中,计算机程序的部分或者全部可以经由rom 12和/或通信单元19而被载入和/或安装到电子设备10上。当计算机程序加载到ram 13并由处理器11执行时,可以执行上文描述的多线程控制方法的一个或多个步骤。备选地,在其他实施例中,处理器11可以通过其他任何适当的方式(例如,借助于固件)而被配置为执行多线程控制方法。
131.本文中以上描述的系统和技术的各种实施方式可以在数字电子电路系统、集成电路系统、现场可编程门阵列(fpga)、专用集成电路(asic)、专用标准产品(assp)、芯片上系统的系统(soc)、复杂可编程逻辑设备(cpld)、计算机硬件、固件、软件、和/或它们的组合中实现。这些各种实施方式可以包括:实施在一个或者多个计算机程序中,该一个或者多个计算机程序可在包括至少一个可编程处理器的可编程系统上执行和/或解释,该可编程处理器可以是专用或者通用可编程处理器,可以从存储系统、至少一个输入装置、和至少一个输出装置接收数据和指令,并且将数据和指令传输至该存储系统、该至少一个输入装置、和该至少一个输出装置。
132.用于实施本发明的方法的计算机程序可以采用一个或多个编程语言的任何组合来编写。这些计算机程序可以提供给通用计算机、专用计算机或其他可编程数据处理装置的处理器,使得计算机程序当由处理器执行时使流程图和/或框图中所规定的功能/操作被实施。计算机程序可以完全在机器上执行、部分地在机器上执行,作为独立软件包部分地在机器上执行且部分地在远程机器上执行或完全在远程机器或服务器上执行。
133.在本发明的上下文中,计算机可读存储介质可以是有形的介质,其可以包含或存储以供指令执行系统、装置或设备使用或与指令执行系统、装置或设备结合地使用的计算机程序。计算机可读存储介质可以包括但不限于电子的、磁性的、光学的、电磁的、红外的、或半导体系统、装置或设备,或者上述内容的任何合适组合。备选地,计算机可读存储介质可以是机器可读信号介质。机器可读存储介质的更具体示例会包括基于一个或多个线的电气连接、便携式计算机盘、硬盘、随机存取存储器(ram)、只读存储器(rom)、可擦除可编程只读存储器(eprom或快闪存储器)、光纤、便捷式紧凑盘只读存储器(cd-rom)、光学储存设备、磁储存设备、或上述内容的任何合适组合。
134.为了提供与用户的交互,可以在电子设备上实施此处描述的系统和技术,该电子设备具有:用于向用户显示信息的显示装置(例如,crt(阴极射线管)或者lcd(液晶显示器)监视器);以及键盘和指向装置(例如,鼠标或者轨迹球),用户可以通过该键盘和该指向装置来将输入提供给电子设备。其它种类的装置还可以用于提供与用户的交互;例如,提供给用户的反馈可以是任何形式的传感反馈(例如,视觉反馈、听觉反馈、或者触觉反馈);并且可以用任何形式(包括声输入、语音输入或者、触觉输入)来接收来自用户的输入。
135.可以将此处描述的系统和技术实施在包括后台部件的计算系统(例如,作为数据服务器)、或者包括中间件部件的计算系统(例如,应用服务器)、或者包括前端部件的计算系统(例如,具有图形用户界面或者网络浏览器的用户计算机,用户可以通过该图形用户界面或者该网络浏览器来与此处描述的系统和技术的实施方式交互)、或者包括这种后台部件、中间件部件、或者前端部件的任何组合的计算系统中。可以通过任何形式或者介质的数
字数据通信(例如,通信网络)来将系统的部件相互连接。通信网络的示例包括:局域网(lan)、广域网(wan)、区块链网络和互联网。
136.计算系统可以包括客户端和服务器。客户端和服务器一般远离彼此并且通常通过通信网络进行交互。通过在相应的计算机上运行并且彼此具有客户端-服务器关系的计算机程序来产生客户端和服务器的关系。服务器可以是云服务器,又称为云计算服务器或云主机,是云计算服务体系中的一项主机产品,以解决了传统物理主机与vps(virtual private server,虚拟专用服务器)服务中,存在的管理难度大,业务扩展性弱的缺陷。
137.应该理解,可以使用上面所示的各种形式的流程,重新排序、增加或删除步骤。例如,本发明中记载的各步骤可以并行地执行也可以顺序地执行也可以不同的次序执行,只要能够实现本发明的技术方案所期望的结果,本文在此不进行限制。
138.上述具体实施方式,并不构成对本发明保护范围的限制。本领域技术人员应该明白的是,根据设计要求和其他因素,可以进行各种修改、组合、子组合和替代。任何在本发明的精神和原则之内所作的修改、等同替换和改进等,均应包含在本发明保护范围之内。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1