发明内容
有鉴于此,本发明的目的在于提供一种多线程执行方法及装置,以解决上述问题。
为了达到上述目的,本发明是这样实现的:
一种多线程执行方法,应用于终端设备,所述方法包括:
获取所述终端设备中的通道;
在主线程中创建线程池,所述线程池中包括多个子线程,每个所述子线程对应一个通道;
获取各所述通道的标识信息,并根据所述标识信息对各所述通道进行初始化,得到多个完成初始化的通道;
运行与各所述完成初始化的通道对应的子线程。
在本发明的较佳实施例中,在上述多线程执行方法中,所述终端设备中存储有多个预设识别码,各所述通道分别连接一操作模块载体,每个所述操作模块能够设置多个测试板,每个测试板对应一个标识码,根据所述标识信息对所述通道进行初始化的步骤包括:
获取所述通道的标识信息以判断该通道能否进行初始化;
当能进行初始化时,获取各所述测试板对应的标识码;
当存在与所述标识码相匹配的预设识别码时,控制与该标识码对应的测试板所在的操作模块连接的通道进行初始化。
在本发明的较佳实施例中,在上述多线程执行方法中,运行各所述完成初始化的通道对应的子线程的步骤包括:
开始计时并运行与各所述完成初始化的通道对应的子线程;
所述方法还包括:
当计时时长达到预设时长时,检测与各所述完成初始化的通道对应的子线程是否执行完成;
当执行完成后关闭各所述子线程。
在本发明的较佳实施例中,在上述多线程执行方法中,关闭各所述子线程的步骤包括:
关闭各所述子线程并再次开始计时;
所述方法还包括:
当计时达到预设计时时长时,再次获取各所述通道的标识信息,并根据所述标识信息对所述通道进行初始化,直至不存在完成初始化的通道时,关闭所述主线程。
在本发明的较佳实施例中,在上述多线程执行方法中,所述终端设备为计算机,所述终端设备中的通道为2个、4个或8个。
本发明实施例还提供一种多线程执行装置,应用于终端设备,所述装置包括:
通道获取模块:用于获取所述终端设备中的通道;
线程池创建模块:用于在主线程中创建线程池,所述线程池中包括多个子线程,每个所述子线程对应一个通道;
初始化模块:用于获取各所述通道的标识信息,并根据所述标识信息对各所述通道进行初始化,得到多个完成初始化的通道;
运行模块:用于运行与各所述完成初始化的通道对应的子线程。
在本发明的较佳实施例中,在上述多线程执行装置中,所述终端设备中存储有多个预设识别码,各所述通道分别连接一操作模块载体,每个所述操作模块能够设置多个测试板,每个测试板对应一个标识码,所述初始化模块包括:
判断子模块:用于获取所述通道的标识信息以判断该通道能否进行初始化;
标识码获取子模块:用于当能进行初始化时,获取各所述测试板对应的标识码;
初始化子模块:用于当存在与所述标识码相匹配的预设识别码时,控制与该标识码对应的测试板所在的操作模块连接的通道进行初始化。
在本发明的较佳实施例中,在上述多线程执行装置中,所述运行模块:还用于开始计时并运行与各所述完成初始化的通道对应的子线程;
所述装置还包括:
检测模块:用于当计时时长达到预设时长时,检测与各所述完成初始化的通道对应的子线程是否执行完成;
关闭模块:用于当执行完成后关闭各所述子线程。
在本发明的较佳实施例中,在上述多线程执行装置中,所述关闭模块还用于:关闭各所述子线程并再次开始计时;
当计时达到预设计时时长时,所述初始化模块:还用于再次获取各所述通道的标识信息,并根据所述标识信息对所述通道进行初始化,直至不存在完成初始化的通道时,关闭所述主线程。
在本发明的较佳实施例中,在上述多线程执行装置中,所述终端设备为计算机,所述终端设备中的通道为2个、4个或8个。
本发明实施例提供的一种多线程执行方法及装置,方法包括:获取所述终端设备中的通道,在主线程中创建线程池,所述线程池中包括多个子线程,每个所述子线程对应一个通道,获取各所述通道的标识信息,并根据所述标识信息对各所述通道进行初始化,得到多个完成初始化的通道,运行与各所述完成初始化的通道对应的子线程。通过上述设置实现了对各通道进行合理准确的设备配置,以及对多通道对应子线程的并行运行,以有效提高了所述终端设备的执行效率。
具体实施方式
为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。通常在此处附图中描述和示出的本发明实施例的组件可以以各种不同的配置来布置和设计。
因此,以下对在附图中提供的本发明的实施例的详细描述并非旨在限制要求保护的本发明的范围,而是仅仅表示本发明的选定实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
应注意到:相似的标号和字母在下面的附图中表示类似项,因此,一旦某一项在一个附图中被定义,则在随后的附图中不需要对其进行进一步定义和解释。
如图1所示,是本发明较佳实施例提供的终端设备10的方框示意图。本发明实施例中的终端设备10可以为服务器、计算机等具备数据处理能力的设备。例如,计算机。如图1所示,终端设备10包括:存储器12和处理器14。
所述存储器12与处理器14之间直接或间接地电性连接,以实现数据的传输或交互。例如,这些元件相互之间可通过一条或多条通讯总线或信号线实现电性连接。存储器12中存储有以软件或固件(Firmware)的形式的软件功能模块,所述处理器14通过运行存储在存储器12内的软件程序以及模块,如本发明实施例中的多线程执行装置100,从而执行各种功能应用以及数据处理,即实现本发明实施例中的多线程执行方法。
其中,所述存储器12可以是,但不限于,随机存取存储器(Random Access Memory,RAM),只读存储器(Read Only Memory,ROM),可编程只读存储器(Programmable Read-OnlyMemory,PROM),可擦除只读存储器(Erasable Programmable Read-Only Memory,EPROM),电可擦除只读存储器(Electrically Erasable Programmable Read-Only Memory,EEPROM)等。其中,存储器12用于存储程序,所述处理器14在接收到执行指令后,执行所述程序。
所述处理器14可能是一种集成电路芯片,具有信号的处理能力。上述的处理器14可以是通用处理器,包括中央处理器(Central Processing Unit,CPU)、网络处理器(Network Processor,NP)等。还可以是数字信号处理器(DSP)、专用集成电路(ASIC)、现场可编程门阵列(FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。可以实现或者执行本发明实施例中的公开的各方法、步骤及逻辑框图。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。
可以理解,图1所示的结构仅为示意,终端设备10还可以包括比图1中所示更多或者更少的组件,或者具有与图1所示不同的配置。图1中所示的各组件可以采用硬件、软件或其组合实现。
请参阅图2,是本发明较佳实施例提供的一种多线程执行方法,所述多线程执行方法包括步骤S110~步骤S170四个步骤:
步骤S110:获取所述终端设备10中的通道。
其中,所述终端设备10可以是但不限于手机、平板电脑或计算机。在本实施例中,所述终端设备10为计算机。所述终端设备10中的通道数量可以是但不限于2个、4个或8个,可以根据所述终端设备10的默认配置信息获得,还可以根据实际需求进行配置,在此不做具体限定,根据实际需求进行设置即可。
步骤S130:在主线程中创建线程池,所述线程池中包括多个子线程,每个所述子线程对应一个通道。
在本实施例中,所述主线程是在终端设备10启动后首先被创建并运行的。所述线程池是一种多线程处理形式,处理过程中将任务添加到队列,然后在创建线程后自动启动这些任务。其中,所述任务为子线程,所述线程池用于存放各所述子线程。需要说明的是,当线程池中没有任务到来时,各所述子线程处于睡眠状态,都启动但是未消耗CPU,仅占用较小的内存空间。
步骤S150:获取各所述通道的标识信息,并根据所述标识信息对各所述通道进行初始化,得到多个完成初始化的通道。
其中,每个通道上对应有一个标识信息,各所述通道上的标识信息可以是相同的,也可以是不同的,在此不做具体限定。所述通道上的标识信息可以是默认设置的,也可以是用户根据需求设置的。在本实施例中,所述标识信息根据用户的实际需求进行设置。
在本实施例中,所述终端设备10中存储有多个预设识别码,各所述通道分别连接一操作模块载体,每个所述操作模块能够设置多个测试板,每个测试板对应一个标识码。请结合图3,在本实施例中,根据所述标识信息对所述通道进行初始化的步骤包括:
步骤S152:获取所述通道的标识信息以判断该通道能否进行初始化。
在本实施例中,所述标识信息包括启动信息和关闭信息,当获取到的标识信息为启动信息时,能够对所述通道进行初始化;当获取到的标识信息为关闭信息时,则不能对所述通道进行初始化。具体的,在本本实施例中,当所述通道上连接的操作模块载体上设置有测试板时所述标识信息为启动信息,否则为关闭信息。
步骤S154:当能进行初始化时,获取各所述测试板对应的标识码。
其中,每个测试板对应一个标识码,不同的测试板对应的标识码不同。
步骤S156:当存在与所述标识码相匹配的预设识别码时,控制与该标识码对应的测试板所在的操作模块连接的通道进行初始化。
通过上述设置,能够有效确保任意通道上连接的操作模块上连接有测试板时,均能被初始化以进行后续步骤。
步骤S170:运行与各所述完成初始化的通道对应的子线程。
通过上述方法以对各所述测试板进行操作时,充分利用了终端设备10中CPU的空闲时间片,以用尽可能少的时间来执行子线程,使得运行各子线程的效率得到较大提高。此外,由于各所述子线程是共享同一内存,所以不需要特殊的数据传送机制,不需要建立共享存储区或共享文件,从而使得各所述子线程之间的协调操作与运行、数据的交互、资源的分配等问题更加易于解决。
请结合图4,为使所述在本实施例中,运行各所述完成初始化的通道对应的子线程的步骤包括:开始计时并运行与各所述完成初始化的通道对应的子线程。所述方法还包括:
步骤S190:当计时时长达到预设时长时,检测与各所述完成初始化的通道对应的子线程是否执行完成。
步骤S210:当执行完成后关闭各所述子线程。
其中所述预设时长可以是但不限于几秒钟、几分钟或十几分钟,在此不做具体限定,根据实际需求进行选取即可。通过上述设置以完成对各所述测试板的运行或检测。
为方便在一次检测完成测试板后,能够实现更换测试板并进行检测。在本实施例中,可选的,所述当执行完成后关闭各所述子线程的步骤包括:关闭各所述子线程并再次开始计时。
所述方法还包括:当计时达到预设计时时长时,再次获取各所述通道的标识信息,并根据所述标识信息对所述通道进行初始化,直至不存在完成初始化的通道时,关闭所述主线程。
其中所述预设计时时长可以是但不限于几分钟或十几分钟,根据用户的实际需求进行设置即可,在此不做具体限定。
通过上述设置以使所述多线程执行方法充分利用了终端设备10中CPU的空闲时间片,可以用尽可能少的时间来执行子线程,使得运行完成各子线程的效率得到较大提高。有效避免在对较多测试板进行分组依次测试或运行时,一组测试板检测完成之后,须再次进行初始化后才能进行下一组测试板的测试占用过多内存以及消耗过多时长的问题。
本发明实施例还提供一种多线程执行装置100,所述多线程执行装置100应用于终端设备10。
其中,所述终端设备10为计算机,所述终端设备10中的通道为2个、4个或8个。
请结合图5,在本实施例中,所述多线程执行装置100包括通道获取模块110、线程池创建模块130、初始化模块150和运行模块170。
所述通道获取模块110用于获取所述终端设备10中的通道。具体地,所述通道获取模块110可用于执行图2中所示的步骤S110,具体的操作方法可参考步骤S110的详细描述。
所述线程池创建模块130用于在主线程中创建线程池,所述线程池中包括多个子线程,每个所述子线程对应一个通道。具体地,所述线程池创建模块130可用于执行图2中所示的步骤S130,具体的操作方法可参考步骤S130的详细描述。
所述初始化模块150用于获取各所述通道的标识信息,并根据所述标识信息对各所述通道进行初始化,得到多个完成初始化的通道。具体地,所述初始化模块150可用于执行图2中所示的步骤S150,具体的操作方法可参考步骤S150的详细描述。
可选的,在本实施例中,所述终端设备10中存储有多个预设识别码,各所述通道分别连接一操作模块载体,每个所述操作模块能够设置多个测试板,每个测试板对应一个标识码。请结合图6,所述初始化模块150包括判断子模块152、标识码获取子模块154和初始化子模块156。
所述判断子模块152用于获取所述通道的标识信息以判断该通道能否进行初始化。具体地,所述判断子模块152可用于执行图3中所示的步骤S152,具体的操作方法可参考步骤S152的详细描述。
所述标识码获取子模块154用于当能进行初始化时,获取各所述测试板对应的标识码。具体地,所述标识码获取子模块154可用于执行图3中所示的步骤S154,具体的操作方法可参考步骤S154的详细描述。
所述初始化子模块156用于当存在与所述标识码相匹配的预设识别码时,控制与该标识码对应的测试板所在的操作模块连接的通道进行初始化。具体地,所述初始化子模块156可用于执行图3中所示的步骤S156,具体的操作方法可参考步骤S156的详细描述。
所述运行模块170用于运行与各所述完成初始化的通道对应的子线程。具体地,所述运行模块170可用于执行图2中所示的步骤S170,具体的操作方法可参考步骤S170的详细描述。
可选的,所述运行模块170还用于开始计时并运行与各所述完成初始化的通道对应的子线程。请结合图7,在本实施例中,所述多线程执行装置100还包括检测模块190和关闭模块210。
所述检测模块190用于当计时时长达到预设时长时,检测与各所述完成初始化的通道对应的子线程是否执行完成。具体地,所述检测模块190可用于执行图4中所示的步骤S190,具体的操作方法可参考步骤S190的详细描述。
所述关闭模块210用于当执行完成后关闭各所述子线程。具体地,所述关闭模块210可用于执行图4中所示的步骤S210,具体的操作方法可参考步骤S210的详细描述。
其中所述关闭模块210还用于关闭各所述子线程并再次开始计时。当计时达到预设计时时长时,所述初始化模块150还用于再次获取各所述通道的标识信息,并根据所述标识信息对所述通道进行初始化,直至不存在完成初始化的通道时,关闭所述主线程。
综上,本发明提供的一种多线程执行方法及装置,通过在主线程中创建包括多个子线程的线程池,获取各所述通道的标识信息,并根据所述标识信息对各所述通道进行初始化,得到多个完成初始化的通道,运行与各所述完成初始化的通道对应的子线程,实现了对各通道进行合理准确的设备配置,以及对多通道对应子线程的并行运行,有效提高了所述终端设备10的执行效率。在各通道对应的子线程执行完成后,再次获取各所述通道的标识信息,并根据所述标识信息对所述通道进行初始化,直至不存在完成初始化的通道时,关闭所述主线程,以有效避免在对较多测试板进行分组依次测试或运行时,一组测试板检测完成之后,须再次初始化以进行下一组测试板的测试占用过多内存以及消耗过多时长的问题。
在本发明实施例所提供的实施例中,应该理解到,所揭露的装置和方法,也可以通过其它的方式实现。以上所描述的装置和方法实施例仅仅是示意性的,例如,附图中的流程图和框图显示了根据本发明的多个实施例的装置、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段或代码的一部分,所述模块、程序段或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现方式中,i方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个连续的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或动作的专用的基于硬件的装置来实现,或者可以用专用硬件与计算机指令的组合来实现。
另外,在本发明各个实施例中的各功能模块可以集成在一起形成一个独立的部分,也可以是各个模块单独存在,也可以两个或两个以上模块集成形成一个独立的部分。
所述功能如果以软件功能模块的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,电子设备,或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、磁碟或者光盘等各种可以存储程序代码的介质。需要说明的是,在本文中,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
以上所述仅为本发明的优选实施例而已,并不用于限制本发明,对于本领域的技术人员来说,本发明可以有各种更改和变化。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。