CN110321175A - 一种控制器初始化方法及相关装置 - Google Patents
一种控制器初始化方法及相关装置 Download PDFInfo
- Publication number
- CN110321175A CN110321175A CN201910604105.0A CN201910604105A CN110321175A CN 110321175 A CN110321175 A CN 110321175A CN 201910604105 A CN201910604105 A CN 201910604105A CN 110321175 A CN110321175 A CN 110321175A
- Authority
- CN
- China
- Prior art keywords
- controller
- initialization
- priority
- register
- protocol
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/4401—Bootstrapping
- G06F9/4403—Processor initialisation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/445—Program loading or initiating
- G06F9/44505—Configuring for program initiating, e.g. using registry, configuration files
- G06F9/4451—User profiles; Roaming
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/48—Program initiating; Program switching, e.g. by interrupt
- G06F9/4806—Task transfer initiation or dispatching
- G06F9/4843—Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
- G06F9/4881—Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Computer Security & Cryptography (AREA)
- Multi Processors (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
Abstract
本申请实施例公开了一种控制器初始化方法及相关装置,用于提高控制器的初始化速度。本申请实施例方法包括:生成初始化注册器,所述初始化注册器用于对需要初始化的控制器进行管理和分析操作;生成初始化协议,通过所述初始化协议实现所述控制器的初始化逻辑功能的统一化处理初始化协议注册到所述初始化注册器中;获取预设的优先级策略,所述优先级策略用于决定所述控制器初始化时的优先级顺序;根据预设的优先级策略,获取所述控制器的优先级M;根据所述控制器的优先级M,通过所述初始化注册器对所述控制器进行初始化。
Description
技术领域
本申请涉及智能终端技术领域,尤其涉及一种控制器初始化方法及相关装置。
背景技术
随着终端技术的不断发展,智能终端在社会生活中的普及率越来越高,用户在日常生活中使用智能终端的频率也越来越高,应用了各种新技术的智能终端也应运而生,人们不仅可以使用智能终端打电话、发短信,还可以看视频、听音乐、即时通讯、玩游戏等,使得智能终端成为了人们不可缺少的重要工具。
目前基于终端的不同场景的应用程序数以万计,随着用户在终端上安装的应用数量越来越多,以及应用的运行逻辑越来越复杂,通常终端上在运行应用时,会同时开启多个控制器程,而每个控制器执行对应的任务前都要进行初始化操作。
现有技术中,传统方案中的初始化对控制器的初始化时顺序执行的,也就是说当初始化控制器需要初始化多个控制器的时候是按照顺序执行,一个一个来进行初始化操作。如果其中某个控制器需要耗时很久才能初始化完成,这样高就会直接导致后续的所有控制器的初始化延后,从而影响整个初始化效率和速度。
发明内容
本申请实施例提供了一种控制器初始化方法及相关装置,用于提高控制器初始化速度。
本申请实施例的第一方面提供了一种控制器初始化方法,包括:
生成初始化注册器,所述初始化注册器用于对需要初始化的控制器进行管理和分析操作;
生成初始化协议,通过所述初始化协议实现所述控制器的初始化逻辑功能的统一化处理;
将所述初始化协议注册到所述初始化注册器中;
获取预设的优先级策略,所述优先级策略用于决定所述控制器初始化时的优先级顺序;
根据预设的优先级策略,获取所述控制器的优先级M;
根据所述控制器的优先级M,通过所述初始化注册器对所述控制器进行初始化。
在一种可能的实施例中,所述根据预设的优先级策略获取所述控制器的优先级M,具体包括:
获取所述控制器的紧急度因子K,K为[10,100]之间的整数;
获取所述控制器的复杂度因子B,B=N*Q,N为表示算法复杂度的自然数,Q为影响复杂度因子B的增大因子,用于扩大复杂度因子B的影响程度,Q为大于等于1的正数;
所述控制器的优先级M通过以下公式计算得到:
M=(T*K/B)*(T*K/B);T是一个调节系数,是1-100之间的整数。
在一种可能的实施例中,所述生成初始化注册器,具体包括:
通过初始化注册器函数addInitRegister生成初始化注册器;在所述注册器函数中访问权限是一个public公有权限的,返回值是一个void类型的返回值,所述初始化注册器中包含两个入参参数:IInit协议类型的参数myInitHandler和表示所述控制器的优先级参数M;
所述生成初始化协议,具体包括:
生成初始化协议;所述初始化协议包含一个协议方法onInitStart,所述协议方法是一个public公有权限的方法,返回值是boolean布尔类型的返回值。
在一种可能的实施例中,所述生成初始化注册器,还包括:
定义了一个全局的集合对象List,用于存储所述初始化注册器数据的信息;在所述初始化器注册器函数中对所述集合对象List进行初始化操作。
在一种可能的实施例中,所述生成初始化注册器,还包括:
在所述函数addInitRegister中,对myInitHandler进行判空,如果所述myInitHandler是空,通过return将所述函数addInitRegister进行返回,否则进行判定是否包含所述myInitHandler,如果包含了所述myInitHandler则通过return语句来终止逻辑,否则就将所述myInitHandler添加到所述集合对象List中。
在一种可能的实施例中,,所述将所述初始化协议注册到所述初始化注册器中,具体包括:
通过implements的方式来继承所述初始化协议并复写所述onInitStart方法;所述onInitStart方法内部的业务逻辑通过子线程执行。
在一种可能的实施例中,所述根据所述控制器的优先级M,通过所述初始化注册器对所述控制器进行初始化,具体包括:
根据当前系统性能,获取第一线程数量因子Num1;
根据所述集合对象List中优先级M大于预设值的控制器的数量获得第二线程数量因子Num2;
比较所述第一线程数量因子Num1和第二线程数量因子Num2的大小,取其中较大值作为主线程数量Num。
根据所述主线程数量Num生成对应数量的主线程;
根据所述控制器的任务信息,生成所述主线程对应的子线程,通过所述子线程对所述控制器进行初始化。
本申请实施例的第二方面提供了一种控制器初始化装置,包括:初始化注册器生成单元,用于生成初始化注册器,所述初始化注册器用于对需要初始化的控制器进行管理和分析操作;初始化协议生成单元,用于生成初始化协议,通过所述初始化协议实现所述控制器的初始化逻辑功能的统一化处理;注册单元,用于将所述初始化协议注册到所述初始化注册器中;优先级获取单元,获取预设的优先级策略,所述优先级策略用于决定所述控制器初始化时的优先级顺序;根据预设的优先级策略,获取所述控制器的优先级M;执行单元,用于根据所述控制器的优先级M,通过所述初始化注册器对所述控制器进行初始化。
本申请第三方面提供了一种计算机可读存储介质,所述计算机可读存储介质中存储有指令,当其在计算机上运行时,使得计算机执行上述各方面所述的方法。
本申请的第四方面提供了一种包含指令的计算机程序产品,当其在计算机上运行时,使得计算机执行上述各方面所述的方法。
从以上技术方案可以看出,本申请实施例具有以下优点:生成初始化注册器,所述初始化注册器用于对需要初始化的控制器进行管理和分析操作;生成初始化协议,通过所述初始化协议实现所述控制器的初始化逻辑功能的统一化处理初始化协议注册到所述初始化注册器中;获取预设的优先级策略,所述优先级策略用于决定所述控制器初始化时的优先级顺序;根据预设的优先级策略,获取所述控制器的优先级M;根据所述控制器的优先级M,通过所述初始化注册器对所述控制器进行初始化。本申请实施例中,通过获取控制器对应的优先级,并根据优先级在多个子线程内对控制器进行初始化,从而能够同时对多个控制器进行初始化,提高了控制器初始化的速度。
附图说明
图1为本申请实施例提供的一种控制器初始化方法的流程图;
图2为本申请实施例提供的一种可能的控制器初始化装置的结构示意图;
图3为本申请实施例提供的一种可能的计算机可读存储介质的硬件结构示意图。
具体实施方式
本申请实施例提供了一种控制器初始化方法及相关装置,用于提高控制器初始化速度。
下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
请参阅图1,为本申请实施例提供的一种可能的视频切换清晰度的方法的流程图,具体包括:
101、生成初始化注册器,所述初始化注册器用于对需要初始化的控制器进行管理和分析操作;
通过初始化注册器函数Public void addInitRegister(IInit myInitHandler,int M){}生成初始化注册器;所述注册器函数中访问权限是一个public公有权限,返回值是一个void类型的返回值,函数的名称是addInitRegister,所述初始化注册器中包含一个入参参数,该参数为IInit协议类型的参数myInitHandler;所述M是所述控制器的优先级;通过生成一个注册器,可以将控制器进行集中管理,提高控制器初始化速度。
可选的,可以定义一个全局的集合对象List,用于存储所述初始化注册器数据的信息;在所述初始化器注册器函数中对所述集合对象List进行初始化操作,具体的初始化所述集合对象List的方法如下:List<IInit>listInits=new ArrayList<IInit>()。通过集合对象List,可以维护所有的注册协议对象,提高控制器初始化速度。
可选的,在所述函数addInitRegister中,通过调用if(myInitHandler==null)的方式来对myInitHandler进行判空,如果该表达式成立就是空否则就是非空;如果myInitHandler是空,通过return将所述函数addInitRegister进行返回,否则通过调用listInits.contains(myInitHandler)来进行判定是否包含myInitHandler,如果包含了myInitHandler则通过return语句来终止逻辑,否则就通过调用listInits.add(myInitHandler)方法来将myInitHandler添加到所述集合对象List中。这样可以避免后续业务逻辑出现空指针异常的问题,提高系统稳定性,提高控制器初始化速度。
102、生成初始化协议,通过所述初始化协议实现所述控制器的初始化逻辑功能的统一化处理;
为了实现初始化逻辑的统一处理,首先需要生成一个初始化的协议,通过该协议来实现初始化逻辑功能的统一化处理。
通过函数public interface IInit{public boolean onInitStart();}生成初始化协议;所述初始化协议名称是IInit,所述初始化协议包含一个协议方法onInitStart,所述协议方法是一个public公有权限的方法,返回值是boolean布尔类型的返回值,如果返回true标示初始化完成,如果返回false表示初始化失败。通过所述初始化协议来实现初始化逻辑功能的统一化处理,提高了控制器初始化速度。
103、将所述初始化协议注册到所述初始化注册器中;
通过implements的方式来继承所述初始化协议并复写所述onInitStart方法;所述onInitStart方法内部的业务逻辑通过子线程执行。
104、获取预设的优先级策略,所述优先级策略用于决定所述控制器初始化时的优先级顺序;
可以自动从本地或服务器上获取预设的优先级策略,也可以获取用户手动选择的优先级策略,所述优先级策略用于决定所述控制器初始化时的优先级顺序。
105、根据预设的优先级策略,获取所述控制器的优先级M;
获取所述控制器的紧急度因子K,K为[10,100]之间的整数;K表示控制器对应的任务的紧急程度,K值越大,则表示越紧急,要被优先执行;
获取所述控制器的复杂度因子B,B=N*Q,N为表示算法复杂度的自然数,如果N为0的时候将N也赋值为1避免出现业务逻辑异常,Q为影响复杂度因子B的增大因子,用于扩大复杂度因子B的影响程度,Q为大于等于1的正数;算法复杂度用于评估处理所述任务所使用算法的复杂度,任务复杂度B的数字越大,则该控制器对应的任务越复杂。
所述控制器的优先级M通过以下公式计算得到:
M=(T*K/B)*(T*K/B);T是一个调节系数,是1-100之间的整数,可以根据具体情况来取值。M与K、B之间成平方的关系,这样可以扩大其紧急度因子K和复杂度因子B的影响程度,使得M的值域区间分布更加分散,方便后期去区分不同控制器的优先级M。由此可见,M与K层正比,与B成反比,即任务紧急程度越高,则任务会被更优先去处理,任务复杂度越大,因为其处理起来更费时间,因此将其优先级定为更低,这样能够使得紧急度高和复杂度低的任务对应的控制器获得更优先初始化,能够提高控制器初始化速度。
106、根据所述控制器的优先级M,通过所述初始化注册器对所述控制器进行初始化。
根据当前系统性能,获取第一线程数量因子Num1,所述系统性能包括系统处理器性能或系统内存性能;例如,通过获取系统内存大小来进行获取第一线程数量因子Num1定,例如若系统内存小于等于2G则判断为低端机,否则判断其为高端机。构建一个系统性能与线程数量之间的映射关系,具体映射函数设计如下所示:
Num1=C*mem
其中C是一个调节参数,mem是系统内存容量,第一线程数量因子Num1表示是需要开辟的总的第一线程数量,第一线程数量因子。可选的,Num1范围是[1,10],如果超出该范围区间则取最大值。
根据所述集合对象List中优先级M大于预设值的控制器的数量获得第二线程数量因子Num2;
比较所述第一线程数量因子Num1和第二线程数量因子Num2的大小,取其中较大值作为将要创建的主线程数量Num。
根据所述主线程数量Num生成对应数量的主线程;
根据所述控制器的任务信息,生成所述主线程对应的子线程,通过所述子线程对所述控制器进行初始化。
通过开辟多个线程来执行集合对象List中所引用的初始化列表。首先需要通过调用listInits.size()方法来获取到需要初始化的控制器的数量initNum,然后通过调用initNum除以Num得到一个整数X,然后按照每个线程执行X个任务,可选的,若initNu除以Num会有余数,则余数部分对应的控制器都放到最后一个线程中去进行初始化。
在每一个主线程中,通过listInits.get(i)方法来获取到对应控制器的任务信息,然后调用其中的线程池中的start函数来开辟一个子线程,然后将获取到任务放在开辟好的子线程中来进行处理。这样原来是在主线程中处理的任务会全部切换到子线程中来处理,非主线程的函数也会切换到实例化的子线程中来进行处理,因为开辟了多个子线程任务,因此可以达到多个初始化过程并行的目的,从而加快了控制器初始化的速度和效率。
上面从控制器初始化方法的角度对本申请实施例进行了描述,下面从控制器初始化装置的角度对本申请实施例进行描述。
请参阅图2,图2为本申请实施例提供的一种可能的控制器初始化装置20的实施例示意图,其中,该控制器初始化装置20具体包括:
初始化注册器生成单元201,用于生成初始化注册器,所述初始化注册器用于对需要初始化的控制器进行管理和分析操作;初始化注册器生成单元201通过初始化注册器函数Public void addInitRegister(IInit myInitHandler,int M){}生成初始化注册器;所述注册器函数中访问权限是一个public公有权限,返回值是一个void类型的返回值,函数的名称是addInitRegister,所述初始化注册器中包含一个入参参数,该参数为IInit协议类型的参数myInitHandler;所述M是所述控制器的优先级;通过生成一个注册器,可以将控制器进行集中管理,提高控制器初始化速度。
可选的,可以定义一个全局的集合对象List,用于存储所述初始化注册器数据的信息;在所述初始化器注册器函数中对所述集合对象List进行初始化操作,具体的初始化所述集合对象List的方法如下:List<IInit>listInits=new ArrayList<IInit>()。通过集合对象List,可以维护所有的注册协议对象,提高控制器初始化速度。
可选的,在所述函数addInitRegister中,通过调用if(myInitHandler==null)的方式来对myInitHandler进行判空,如果该表达式成立就是空否则就是非空;如果myInitHandler是空,通过return将所述函数addInitRegister进行返回,否则通过调用listInits.contains(myInitHandler)来进行判定是否包含myInitHandler,如果包含了myInitHandler则通过return语句来终止逻辑,否则就通过调用listInits.add(myInitHandler)方法来将myInitHandler添加到所述集合对象List中。这样可以避免后续业务逻辑出现空指针异常的问题,提高系统稳定性,提高控制器初始化速度。
初始化协议生成单元202,用于生成初始化协议,通过所述初始化协议实现所述控制器的初始化逻辑功能的统一化处理;为了实现初始化逻辑的统一处理,首先需要生成一个初始化的协议,通过该协议来实现初始化逻辑功能的统一化处理。
通过函数public interface IInit{public boolean onInitStart();}生成初始化协议;所述初始化协议名称是IInit,所述初始化协议包含一个协议方法onInitStart,所述协议方法是一个public公有权限的方法,返回值是boolean布尔类型的返回值,如果返回true标示初始化完成,如果返回false表示初始化失败。通过所述初始化协议来实现初始化逻辑功能的统一化处理,提高了控制器初始化速度。
注册单元203,用于将所述初始化协议注册到所述初始化注册器中;通过implements的方式来继承所述初始化协议并复写所述onInitStart方法;所述onInitStart方法内部的业务逻辑通过子线程执行。
优先级获取单元204,获取预设的优先级策略,所述优先级策略用于决定所述控制器初始化时的优先级顺序,根据预设的优先级策略,获取所述控制器的优先级M;获取所述控制器的紧急度因子K,K为[10,100]之间的整数;K表示控制器对应的任务的紧急程度,K值越大,则表示越紧急,要被优先执行;
获取所述控制器的复杂度因子B,B=N*Q,N为表示算法复杂度的自然数,如果N为0的时候将N也赋值为1避免出现业务逻辑异常,Q为影响复杂度因子B的增大因子,用于扩大复杂度因子B的影响程度,Q为大于等于1的正数;算法复杂度用于评估处理所述任务所使用算法的复杂度,任务复杂度B的数字越大,则该控制器对应的任务越复杂。
所述控制器的优先级M通过以下公式计算得到:
M=(T*K/B)*(T*K/B);T是一个调节系数,是1-100之间的整数,可以根据具体情况来取值。M与K、B之间成平方的关系,这样可以扩大其紧急度因子K和复杂度因子B的影响程度,使得M的值域区间分布更加分散,方便后期去区分不同控制器的优先级M。由此可见,M与K层正比,与B成反比,即任务紧急程度越高,则任务会被更优先去处理,任务复杂度越大,因为其处理起来更费时间,因此将其优先级定为更低,这样能够使得紧急度高和复杂度低的任务对应的控制器获得更优先初始化,能够提高控制器初始化速度。
执行单元205,用于根据所述控制器的优先级M,通过所述初始化注册器对所述控制器进行初始化。根据当前系统性能,获取第一线程数量因子Num1,所述系统性能包括系统处理器性能或系统内存性能;例如,通过获取系统内存大小来进行获取第一线程数量因子Num1定,例如若系统内存小于等于2G则判断为低端机,否则判断其为高端机。构建一个系统性能与线程数量之间的映射关系,具体映射函数设计如下所示:
Num1=C*mem
其中C是一个调节参数,mem是系统内存容量,第一线程数量因子Num1表示是需要开辟的总的第一线程数量,第一线程数量因子。可选的,Num1范围是[1,10],如果超出该范围区间则取最大值。
根据所述集合对象List中优先级M大于预设值的控制器的数量获得第二线程数量因子Num2;
比较所述第一线程数量因子Num1和第二线程数量因子Num2的大小,取其中较大值作为将要创建的主线程数量Num。
根据所述主线程数量Num生成对应数量的主线程;
根据所述控制器的任务信息,生成所述主线程对应的子线程,通过所述子线程对所述控制器进行初始化。
通过开辟多个线程来执行集合对象List中所引用的初始化列表。首先需要通过调用listInits.size()方法来获取到需要初始化的控制器的数量initNum,然后通过调用initNum除以Num得到一个整数X,然后按照每个线程执行X个任务,可选的,若initNu除以Num会有余数,则余数部分对应的控制器都放到最后一个线程中去进行初始化。
在每一个主线程中,通过listInits.get(i)方法来获取到对应控制器的任务信息,然后调用其中的线程池中的start函数来开辟一个子线程,然后将获取到任务放在开辟好的子线程中来进行处理。这样原来是在主线程中处理的任务会全部切换到子线程中来处理,非主线程的函数也会切换到实例化的子线程中来进行处理,因为开辟了多个子线程任务,因此可以达到多个初始化过程并行的目的,从而加快了控制器初始化的速度和效率。
请参阅图3,图3为本申请实施例提供的一种计算机可读存储介质的实施例示意图。
如图3所示,本实施例提供了一种计算机可读存储介质400,其上存储有计算机程序411,该计算机程序411被处理器执行时实现如下步骤:
生成初始化注册器,所述初始化注册器用于对需要初始化的控制器进行管理和分析操作;
通过初始化注册器函数Public void addInitRegister(IInit myInitHandler,int M){}生成初始化注册器;所述注册器函数中访问权限是一个public公有权限,返回值是一个void类型的返回值,函数的名称是addInitRegister,所述初始化注册器中包含一个入参参数,该参数为IInit协议类型的参数myInitHandler;所述M是所述控制器的优先级;通过生成一个注册器,可以将控制器进行集中管理,提高控制器初始化速度。
可选的,在一种可能的实施例中,该计算机程序411被处理器执行时具体实现如下步骤:可以定义一个全局的集合对象List,用于存储所述初始化注册器数据的信息;在所述初始化器注册器函数中对所述集合对象List进行初始化操作,具体的初始化所述集合对象List的方法如下:List<IInit>listInits=new ArrayList<IInit>()。通过集合对象List,可以维护所有的注册协议对象,提高控制器初始化速度。
可选的,在一种可能的实施例中,该计算机程序411被处理器执行时具体实现如下步骤:在所述函数addInitRegister中,通过调用if(myInitHandler==null)的方式来对myInitHandler进行判空,如果该表达式成立就是空否则就是非空;如果myInitHandler是空,通过return将所述函数addInitRegister进行返回,否则通过调用listInits.contains(myInitHandler)来进行判定是否包含myInitHandler,如果包含了myInitHandler则通过return语句来终止逻辑,否则就通过调用listInits.add(myInitHandler)方法来将myInitHandler添加到所述集合对象List中。这样可以避免后续业务逻辑出现空指针异常的问题,提高系统稳定性,提高控制器初始化速度。
生成初始化协议,通过所述初始化协议实现所述控制器的初始化逻辑功能的统一化处理;
为了实现初始化逻辑的统一处理,首先需要生成一个初始化的协议,通过该协议来实现初始化逻辑功能的统一化处理。
通过函数public interface IInit{public boolean onInitStart();}生成初始化协议;所述初始化协议名称是IInit,所述初始化协议包含一个协议方法onInitStart,所述协议方法是一个public公有权限的方法,返回值是boolean布尔类型的返回值,如果返回true标示初始化完成,如果返回false表示初始化失败。通过所述初始化协议来实现初始化逻辑功能的统一化处理,提高了控制器初始化速度。
将所述初始化协议注册到所述初始化注册器中;通过implements的方式来继承所述初始化协议并复写所述onInitStart方法;所述onInitStart方法内部的业务逻辑通过子线程执行。
获取预设的优先级策略,所述优先级策略用于决定所述控制器初始化时的优先级顺序;可以自动从本地或服务器上获取预设的优先级策略,也可以获取用户手动选择的优先级策略,所述优先级策略用于决定所述控制器初始化时的优先级顺序。
根据预设的优先级策略,获取所述控制器的优先级M;获取所述控制器的紧急度因子K,K为[10,100]之间的整数;K表示控制器对应的任务的紧急程度,K值越大,则表示越紧急,要被优先执行;
获取所述控制器的复杂度因子B,B=N*Q,N为表示算法复杂度的自然数,如果N为0的时候将N也赋值为1避免出现业务逻辑异常,Q为影响复杂度因子B的增大因子,用于扩大复杂度因子B的影响程度,Q为大于等于1的正数;算法复杂度用于评估处理所述任务所使用算法的复杂度,任务复杂度B的数字越大,则该控制器对应的任务越复杂。
所述控制器的优先级M通过以下公式计算得到:
M=(T*K/B)*(T*K/B);T是一个调节系数,是1-100之间的整数,可以根据具体情况来取值。M与K、B之间成平方的关系,这样可以扩大其紧急度因子K和复杂度因子B的影响程度,使得M的值域区间分布更加分散,方便后期去区分不同控制器的优先级M。由此可见,M与K层正比,与B成反比,即任务紧急程度越高,则任务会被更优先去处理,任务复杂度越大,因为其处理起来更费时间,因此将其优先级定为更低,这样能够使得紧急度高和复杂度低的任务对应的控制器获得更优先初始化,能够提高控制器初始化速度。
根据所述控制器的优先级M,通过所述初始化注册器对所述控制器进行初始化。
根据当前系统性能,获取第一线程数量因子Num1,所述系统性能包括系统处理器性能或系统内存性能;例如,通过获取系统内存大小来进行获取第一线程数量因子Num1定,例如若系统内存小于等于2G则判断为低端机,否则判断其为高端机。构建一个系统性能与线程数量之间的映射关系,具体映射函数设计如下所示:
Num1=C*mem
其中C是一个调节参数,mem是系统内存容量,第一线程数量因子Num1表示是需要开辟的总的第一线程数量,第一线程数量因子。可选的,Num1范围是[1,10],如果超出该范围区间则取最大值。
根据所述集合对象List中优先级M大于预设值的控制器的数量获得第二线程数量因子Num2;
比较所述第一线程数量因子Num1和第二线程数量因子Num2的大小,取其中较大值作为将要创建的主线程数量Num。
根据所述主线程数量Num生成对应数量的主线程;
根据所述控制器的任务信息,生成所述主线程对应的子线程,通过所述子线程对所述控制器进行初始化。
通过开辟多个线程来执行集合对象List中所引用的初始化列表。首先需要通过调用listInits.size()方法来获取到需要初始化的控制器的数量initNum,然后通过调用initNum除以Num得到一个整数X,然后按照每个线程执行X个任务,可选的,若initNu除以Num会有余数,则余数部分对应的控制器都放到最后一个线程中去进行初始化。
在每一个主线程中,通过listInits.get(i)方法来获取到对应控制器的任务信息,然后调用其中的线程池中的start函数来开辟一个子线程,然后将获取到任务放在开辟好的子线程中来进行处理。这样原来是在主线程中处理的任务会全部切换到子线程中来处理,非主线程的函数也会切换到实例化的子线程中来进行处理,因为开辟了多个子线程任务,因此可以达到多个初始化过程并行的目的,从而加快了控制器初始化的速度和效率。
本领域内的技术人员应明白,本申请的实施例可提供为方法、系统、或计算机程序产品。因此,本申请可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本申请可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本申请是参照根据本申请实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式计算机或者其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
尽管已描述了本申请的优选实施例,但本领域内的技术人员一旦得知了基本创造概念,则可对这些实施例作出另外的变更和修改。所以,所附权利要求意欲解释为包括优选实施例以及落入本申请范围的所有变更和修改。
显然,本领域的技术人员可以对本申请进行各种改动和变型而不脱离本申请的精神和范围。这样,倘若本申请的这些修改和变型属于本申请权利要求及其等同技术的范围之内,则本申请也意图包括这些改动和变型在内。
Claims (10)
1.一种控制器初始化方法,其特征在于,包括:
生成初始化注册器,所述初始化注册器用于对需要初始化的控制器进行管理和分析操作;
生成初始化协议,通过所述初始化协议实现所述控制器的初始化逻辑功能的统一化处理;
将所述初始化协议注册到所述初始化注册器中;
获取预设的优先级策略,所述优先级策略用于决定所述控制器初始化时的优先级顺序;
根据预设的优先级策略,获取所述控制器的优先级M;
根据所述控制器的优先级M,通过所述初始化注册器对所述控制器进行初始化。
2.根据权利要求1所述的方法,其特征在于,所述根据预设的优先级策略获取所述控制器的优先级,具体包括:
获取所述控制器的紧急度因子K,K为[10,100]之间的整数;
获取所述控制器的复杂度因子B,B=N*Q,N为表示算法复杂度的自然数,Q为影响复杂度因子B的增大因子,用于扩大复杂度因子B的影响程度,Q为大于等于1的正数;
所述控制器的优先级M通过以下公式计算得到:
M=(T*K/B)*(T*K/B);T是一个调节系数,是1-100之间的整数。
3.根据权利要求2所述的方法,其特征在于,
所述生成初始化注册器,具体包括:
通过初始化注册器函数addInitRegister生成初始化注册器;在所述注册器函数中访问权限是一个public公有权限的,返回值是一个void类型的返回值,所述初始化注册器中包含两个入参参数:IInit协议类型的参数myInitHandler和表示所述控制器的优先级参数M;
所述生成初始化协议,具体包括:
生成初始化协议;所述初始化协议包含一个协议方法onInitStart,所述协议方法是一个public公有权限的方法,所述协议方法的返回值是boolean布尔类型的返回值。
4.根据权利要求3所述的方法,其特征在于,所述生成初始化注册器,还包括:
定义了一个全局的集合对象List,用于存储所述初始化注册器数据的信息;在所述初始化器注册器函数中对所述集合对象List进行初始化操作。
5.根据权利要求4所述的方法,其特征在于,所述生成初始化注册器,还包括:
在所述函数addInitRegister中,对myInitHandler进行判空,如果所述myInitHandler是空,通过return将所述函数addInitRegister进行返回,否则进行判定是否包含所述myInitHandler,如果包含了所述myInitHandler则通过return语句来终止逻辑,否则就将所述myInitHandler添加到所述集合对象List中。
6.根据权利要求5所述的方法,其特征在于,所述将所述初始化协议注册到所述初始化注册器中,具体包括:
通过implements的方式来继承所述初始化协议并复写所述onInitStart方法;所述onInitStart方法内部的业务逻辑通过子线程执行。
7.根据权利要求6所述的方法,其特征在于,所述根据所述控制器的优先级M,通过所述初始化注册器对所述控制器进行初始化,具体包括:
根据当前系统性能,获取第一线程数量因子Num1;
根据所述集合对象List中优先级M大于预设值的控制器的数量获得第二线程数量因子Num2;
比较所述第一线程数量因子Num1和第二线程数量因子Num2的大小,取其中较大值作为主线程数量Num;
根据所述主线程数量Num生成对应数量的主线程;
根据所述控制器的任务信息,生成所述主线程对应的子线程,通过所述子线程对所述控制器进行初始化。
8.一种控制器初始化装置,其特征在于,包括:
初始化注册器生成单元,用于生成初始化注册器,所述初始化注册器用于对需要初始化的控制器进行管理和分析操作;
初始化协议生成单元,用于生成初始化协议,通过所述初始化协议实现所述控制器的初始化逻辑功能的统一化处理;
注册单元,用于将所述初始化协议注册到所述初始化注册器中;
优先级获取单元,用于获取预设的优先级策略,所述优先级策略用于决定所述控制器初始化时的优先级顺序;根据预设的优先级策略,获取所述控制器的优先级M;
执行单元,用于根据所述控制器的优先级M,通过所述初始化注册器对所述控制器进行初始化。
9.一种计算机可读存储介质,包括指令,当其在计算机上运行时,使得计算机执行如权利要求1-7任意一项所述的方法。
10.一种包含指令的计算机程序产品,当其在计算机上运行时,使得计算机执行如权利要求1-7任意一项所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910604105.0A CN110321175B (zh) | 2019-07-05 | 2019-07-05 | 一种控制器初始化方法及相关装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910604105.0A CN110321175B (zh) | 2019-07-05 | 2019-07-05 | 一种控制器初始化方法及相关装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN110321175A true CN110321175A (zh) | 2019-10-11 |
CN110321175B CN110321175B (zh) | 2023-10-10 |
Family
ID=68122776
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910604105.0A Active CN110321175B (zh) | 2019-07-05 | 2019-07-05 | 一种控制器初始化方法及相关装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN110321175B (zh) |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1756288A (zh) * | 2004-10-01 | 2006-04-05 | 三星电子株式会社 | 具有优先级操作模式的多功能外围设备及其初始化方法 |
CN101370278A (zh) * | 2007-08-17 | 2009-02-18 | 中兴通讯股份有限公司 | 会话初始化协议属性的获取方法 |
US20090138682A1 (en) * | 2007-11-28 | 2009-05-28 | Capps Jr Louis B | Dynamic instruction execution based on transaction priority tagging |
US20110040956A1 (en) * | 2003-08-28 | 2011-02-17 | Mips Technologies, Inc. | Symmetric Multiprocessor Operating System for Execution On Non-Independent Lightweight Thread Contexts |
US8806096B1 (en) * | 2007-04-20 | 2014-08-12 | Netapp, Inc. | Increased concurrency of an initialization process of multiple data storage units of a volume |
CN104468231A (zh) * | 2014-12-23 | 2015-03-25 | 上海斐讯数据通信技术有限公司 | Sdn交换机和控制器动态注册方法 |
-
2019
- 2019-07-05 CN CN201910604105.0A patent/CN110321175B/zh active Active
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20110040956A1 (en) * | 2003-08-28 | 2011-02-17 | Mips Technologies, Inc. | Symmetric Multiprocessor Operating System for Execution On Non-Independent Lightweight Thread Contexts |
CN1756288A (zh) * | 2004-10-01 | 2006-04-05 | 三星电子株式会社 | 具有优先级操作模式的多功能外围设备及其初始化方法 |
US8806096B1 (en) * | 2007-04-20 | 2014-08-12 | Netapp, Inc. | Increased concurrency of an initialization process of multiple data storage units of a volume |
CN101370278A (zh) * | 2007-08-17 | 2009-02-18 | 中兴通讯股份有限公司 | 会话初始化协议属性的获取方法 |
US20090138682A1 (en) * | 2007-11-28 | 2009-05-28 | Capps Jr Louis B | Dynamic instruction execution based on transaction priority tagging |
CN104468231A (zh) * | 2014-12-23 | 2015-03-25 | 上海斐讯数据通信技术有限公司 | Sdn交换机和控制器动态注册方法 |
Also Published As
Publication number | Publication date |
---|---|
CN110321175B (zh) | 2023-10-10 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
WO2022048557A1 (zh) | Ai模型的训练方法、装置、计算设备和存储介质 | |
JP2009529720A5 (zh) | ||
US11663337B2 (en) | Methods and systems for system call reduction | |
CN106529283B (zh) | 一种面向软件定义网络的控制器安全性定量分析方法 | |
WO2021102024A1 (en) | Methods, systems, and media for initiating and monitoring instances of workflows | |
CN110689136B (zh) | 一种深度学习模型获得方法、装置、设备及存储介质 | |
CN109726821B (zh) | 数据均衡方法、装置、计算机可读存储介质及电子设备 | |
CN108961267A (zh) | 图片处理方法、图片处理装置及终端设备 | |
CN103309676B (zh) | 用于海洋数值模拟ROMS的Web服务封装方法以及系统 | |
CN112884569A (zh) | 一种信用评估模型的训练方法、装置及设备 | |
CN111953503A (zh) | Nfv资源部署编排方法和网络功能虚拟化编排器 | |
CN112699046B (zh) | 应用程序测试方法及装置、电子设备和存储介质 | |
WO2021114676A1 (zh) | 一种硬盘预测模型的更新方法、装置、设备及介质 | |
CN110321175A (zh) | 一种控制器初始化方法及相关装置 | |
CN108536434A (zh) | 一种基于高级程序设计语言实现钩子函数的方法及装置 | |
CN112905987B (zh) | 账号识别方法、装置、服务器及存储介质 | |
CN110308942A (zh) | 一种初始化控制器的方法及相关装置 | |
CN115712571A (zh) | 一种交互服务测试、装置、计算机设备及存储介质 | |
CN108932704A (zh) | 图片处理方法、图片处理装置及终端设备 | |
CN109756494B (zh) | 一种负样本变换方法及装置 | |
CN103310002A (zh) | 用于气象预报计算系统MM5的Web服务封装方法以及系统 | |
CN110493320A (zh) | 数据下载方法、装置、电子设备及存储介质 | |
CN110399974A (zh) | 一种超参数的自动确定方法及装置 | |
CN111324368A (zh) | 一种数据共享方法及服务器 | |
CN118567712B (zh) | 一种应用发布方法、系统及计算机存储介质 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
TA01 | Transfer of patent application right |
Effective date of registration: 20230830 Address after: 4B1/2, Jiyou Building, No. 6 Cuizhu Third Street, Xiangzhou District, Zhuhai City, Guangdong Province, 519070 Applicant after: Zhuhai shengweike automation equipment Co.,Ltd. Address before: 430000 room 007, A301, third floor, building B1, software industry phase 4.1, No. 1, Software Park East Road, Donghu New Technology Development Zone, Wuhan City, Hubei Province (Wuhan area of free trade zone) Applicant before: WUHAN DOUYU YULE NETWORK TECHNOLOGY Co.,Ltd. |
|
TA01 | Transfer of patent application right | ||
GR01 | Patent grant | ||
GR01 | Patent grant |