CN113342427B - 程序控制方法及装置 - Google Patents
程序控制方法及装置 Download PDFInfo
- Publication number
- CN113342427B CN113342427B CN202110609122.0A CN202110609122A CN113342427B CN 113342427 B CN113342427 B CN 113342427B CN 202110609122 A CN202110609122 A CN 202110609122A CN 113342427 B CN113342427 B CN 113342427B
- Authority
- CN
- China
- Prior art keywords
- class
- program
- thread
- controlling
- type
- 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.)
- Active
Links
Images
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/448—Execution paradigms, e.g. implementations of programming paradigms
- G06F9/4488—Object-oriented
- G06F9/449—Object-oriented method invocation or resolution
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Stored Programmes (AREA)
Abstract
本公开涉及一种程序控制方法及装置,该方法包括:对于包括第一类和第二类的程序,在所述程序的外部创建所述第一类的第一对象和所述第二类的第二对象,其中,所述第一类的运行依赖于所述第二类运行得到的结果数据;在接收到对应所述程序的程序控制命令的情况下,根据所述程序控制命令的控制类型,确定对所述第一类和所述第二类的控制先后顺序;基于所述控制先后顺序,根据所述第一对象对所述第一类进行对应所述程序控制命令的相应控制,以及根据所述第二对象对所述第二类进行对应所述程序控制命令的相应控制。
Description
技术领域
本公开实施例涉及计算机技术领域,更具体地,涉及一种程序控制方法、一种程序控制装置。
背景技术
在实际的开发过程中,许多面向对象的语言,无论是Java语言还是C++语言,都会涉及到类的嵌套调用。比如一个程序包括A类和B类,B类中包括有A类的对象。
但在某些使用场景下的程序运行控制过程中,类的嵌套调用容易导致程序发生异常。
发明内容
本公开实施例的一个目的是提供一种控制程序的新的技术方案。
根据本公开的第一方面,提供了一种程序控制方法,包括:对于包括第一类和第二类的程序,在所述程序的外部创建所述第一类的第一对象和所述第二类的第二对象,其中,所述第一类的运行依赖于所述第二类运行得到的结果数据;在接收到对应所述程序的程序控制命令的情况下,根据所述程序控制命令的控制类型,确定对所述第一类和所述第二类的控制先后顺序;基于所述控制先后顺序,根据所述第一对象对所述第一类进行对应所述程序控制命令的相应控制,以及根据所述第二对象对所述第二类进行对应所述程序控制命令的相应控制。
可选地,所述程序控制命令包括程序初始化控制命令;所述控制先后顺序包括:先控制所述第一类进行初始化再控制所述第二类进行初始化的控制顺序;所述根据所述第一对象对所述第一类进行对应所述程序控制命令的相应控制,以及根据所述第二对象对所述第二类进行对应所述程序控制命令的相应控制,包括:根据所述第一对象控制所述第一类进行初始化;在所述第一类初始化完成的情况下,根据所述第二对象控制所述第二类进行初始化。
可选地,所述控制所述第一类进行初始化包括:启动用于支持所述第一类运行的第一线程;所述控制所述第二类初始化包括:启动用于支持所述第二类运行的第二线程;在所述第二类的运行不依赖于所述程序中其他类运行得到的结果数据的情况下,所述方法在所述第二线程启动完成之后还包括:控制所述第二类在所述第二线程中运行;控制所述第一类根据所述第二类在所述第二线程中运行得到的结果数据,在所述第一线程中运行;或者,在所述第二类的运行依赖于所述程序中其他类运行得到的结果数据的情况下,所述方法在所述第二线程启动完成之后还包括:控制所述第二类根据所述其他类在相应线程中运行得到的结果数据,在所述第二线程中运行;控制所述第一类根据所述第二类在所述第二线程中运行得到的结果数据,在所述第一线程中运行。
可选地,所述启动用于支持所述第一类运行的第一线程包括:在所述第一线程中创建消息队列;所述方法在控制所述第二类在所述第二线程中运行之后,还包括:将所述第二类在所述第二线程中运行得到的结果数据存入所述消息队列中。
可选地,所述程序控制命令包括程序结束控制命令;所述控制先后顺序包括:先控制所述第二类结束运行再控制所述第一类结束运行的控制顺序;所述根据所述第一对象对所述第一类进行对应所述程序控制命令的相应控制,以及根据所述第二对象对所述第二类进行对应所述程序控制命令的相应控制,包括:根据所述第二对象控制所述第二类结束运行;在所述第二类已结束运行的情况下,根据所述第一对象控制所述第一类结束运行;所述方法在所述程序中任一类均已结束运行之后,还包括:销毁已创建的所述第一对象和所述第二对象。
可选地,在所述第二类的运行不依赖于所述程序中其他类运行得到的结果数据的情况下,所述控制所述第二类结束运行包括:控制用于支持所述第二类运行的第二线程结束;所述控制所述第一类结束运行包括:在所述第二线程已结束的情况下,控制用于支持所述第一类运行的第一线程结束;或者,在所述第二类的运行依赖于所述程序中其他类运行得到的结果数据的情况下,所述控制所述第二类结束运行包括:在用于支持所述其他类运行的相应线程已结束的情况下,控制用于支持所述第二类运行的第二线程结束;所述控制所述第一类结束运行包括:在所述第二线程已结束的情况下,控制用于支持所述第一类运行的第一线程结束。
可选地,所述控制用于支持所述第一类运行的第一线程结束,包括:在所述第一线程中创建的消息队列中没有结果数据的情况下,控制所述第一线程结束;其中,所述消息队列用于存放所述第二类在所述第二线程中运行得到的结果数据。
根据本公开的第二方面,还提供了一种程序控制装置,包括:创建模块,用于对于包括第一类和第二类的程序,在所述程序的外部创建所述第一类的第一对象和所述第二类的第二对象,其中,所述第一类的运行依赖于所述第二类运行得到的结果数据;确定模块,用于在接收到对应所述程序的程序控制命令的情况下,根据所述程序控制命令的控制类型,确定对所述第一类和所述第二类的控制先后顺序;以及,控制模块,用于基于所述控制先后顺序,根据所述第一对象对所述第一类进行对应所述程序控制命令的相应控制,以及根据所述第二对象对所述第二类进行对应所述程序控制命令的相应控制。
根据本公开的第三方面,还提供了一种程序控制装置,包括存储器和处理器,所述存储器用于存储计算机程序;所述处理器用于执行所述计算机程序,以实现根据本公开第一方面所述的方法。
根据本公开的第四方面,还提供了一种计算机可读存储介质,所述计算机可读存储介质上存储计算机程序,所述计算机程序在被处理器执行时实现根据本公开的第一方面所述的方法。
本公开实施例的一个有益效果在于,在程序的外部创建程序中类的对象,使得程序中的类可以不再持有程序中其他类的对象,对程序中类的关系进行解绑定,从而在接收到程序控制命令的情况下,可结合程序控制命令的类型所决定的对程序中类的控制先后顺序,根据程序外部创建的对象对程序中的类进行对应程序控制命令的相应控制。由于本公开实施例不涉及类的嵌套调用即可实现对程序的控制,从而不存在因类的嵌套调用导致程序发生异常的问题。
通过以下参照附图对本公开的示例性实施例的详细描述,本公开实施例的其它特征及其优点将会变得清楚。
附图说明
被结合在说明书中并构成说明书的一部分的附图示出了本公开的实施例,并且连同其说明一起用于解释本公开实施例的原理。
图1是能够实施根据一个实施例的程序控制方法的电子设备的组成结构的示意图;
图2是根据一个实施例的程序控制方法的流程示意图;
图3是根据另一个实施例的程序控制方法的流程示意图;
图4是根据一个实施例的程序控制装置的方框原理图;
图5是根据一个实施例的程序控制装置的硬件结构示意图。
具体实施方式
现在将参照附图来详细描述本公开的各种示例性实施例。应注意到:除非另外具体说明,否则在这些实施例中阐述的部件和步骤的相对布置、数字表达式和数值不限制本发明的范围。
以下对至少一个示例性实施例的描述实际上仅仅是说明性的,决不作为对本发明及其应用或使用的任何限制。
对于相关领域普通技术人员已知的技术、方法和设备可能不作详细讨论,但在适当情况下,所述技术、方法和设备应当被视为说明书的一部分。
在这里示出和讨论的所有例子中,任何具体值应被解释为仅仅是示例性的,而不是作为限制。因此,示例性实施例的其它例子可以具有不同的值。
应注意到:相似的标号和字母在下面的附图中表示类似项,因此,一旦某一项在一个附图中被定义,则在随后的附图中不需要对其进行进一步讨论。
本公开实施例的一个应用场景为程序控制场景。该程序至少包括两个类,一个类的运行依赖于另一个类运行得到的结果数据。
在实现的过程中,发明人发现在涉及到类的嵌套调用的情况下,会有类的嵌套调用容易导致程序发生异常的问题。比如为了实现程序控制目的,一种可选的实施方式为:假设程序包括A类和B类,B类中包括有A类的对象a,A类的运行依赖于B类运行的结果数据。B类运行得到结果数据后,可以基于包括的对象a将得到的结果数据提供给A类,A类进而根据该结果数据来运行。
一方面,需要初始化该程序时,可以先初始化B类,在B类初始化完成后,基于B类包括的对象a,再初始化A类。但是这一实现方式容易存在问题1:B类初始化完成后可以进行循环运行并产生结果数据,但此时A类可能还未完成初始化,使得B类无法将生成的结果数据交给A类。如此,会导致程序发生异常。
另一方面,需要结束该程序时,由于B类运行生成的结果数需要交给A类,则可以先结束B类,在B类结束完成后,再结束A类。但是这一实现方式容易存在问题2:B类结束过程中会销毁掉包括的对象a,虽然此时A类还未结束,但不能基于对象a以正常运行。如此,会导致程序发生异常。
针对以上实施方式存在的技术问题,发明人提出了一种程序控制方法,该方法在程序的外部创建程序中类的对象,使得程序中的类可以不再持有程序中其他类的对象,对程序中类的关系进行解绑定,从而在接收到程序控制命令的情况下,可结合程序控制命令的类型所决定的对程序中类的控制先后顺序,根据程序外部创建的对象对程序中的类进行对应程序控制命令的相应控制。由于本公开实施例不涉及类的嵌套调用即可实现对程序的控制,从而不存在因类的嵌套调用导致程序发生异常的问题。
<硬件配置>
图1示出可以实现本发明的实施例的电子设备1000的硬件配置的示意图。
电子设备1000可以是智能手机、便携式电脑、台式计算机、平板电脑、服务器等,在此不做限定。
该电子设备1000的硬件配置可以包括但不限于处理器1100、存储器1200、接口装置1300、通信装置1400、显示装置1500、输入装置1600、扬声器1700、麦克风1800等等。其中,处理器1100可以是中央处理器CPU、图形处理器GPU、微处理器MCU等,用于执行计算机程序,该计算机程序可以采用比如x86、Arm、RISC、MIPS、SSE等架构的指令集编写。存储器1200例如包括ROM(只读存储器)、RAM(随机存取存储器)、诸如硬盘的非易失性存储器等。接口装置1300例如包括USB接口、串行接口、并行接口等。通信装置1400例如能够利用光纤或电缆进行有线通信,或者进行无线通信,具体地可以包括WiFi通信、蓝牙通信、2G/3G/4G/5G通信等。显示装置1500例如是液晶显示屏、触摸显示屏等。输入装置1600例如可以包括触摸屏、键盘、体感输入等。用户可以通过扬声器1700和麦克风1800输入/输出语音信息。
应用于本公开实施例中,电子设备1000的存储器1200用于存储指令,所述指令用于控制所述处理器1100进行操作以支持实现根据本公开任意实施例的程序控制方法。技术人员可以根据本公开所公开方案设计指令。指令如何控制处理器进行操作,这是本领域公知,故在此不再详细描述。该电子设备1000可以安装有智能操作系统(例如Windows、Linux、安卓、IOS等系统)和应用软件。
本领域技术人员应当理解,尽管在图1中示出了电子设备1000的多个装置,但是,本公开实施例的电子设备1000可以仅涉及其中的部分装置,例如,只涉及处理器1100和存储器1200。这是本领域公知,此处不再赘述。
下面,参照附图描述根据本发明的各个实施例和例子。
<方法实施例>
图2是根据一个实施例的程序控制方法的流程示意图。本实施例的实施主体例如为图1中的电子设备1000或包括该电子设备1000。
如图2所示,本实施例的程序控制方法可以包括如下步骤S210~S230:
步骤S210,对于包括第一类和第二类的程序,在所述程序的外部创建所述第一类的第一对象和所述第二类的第二对象,其中,所述第一类的运行依赖于所述第二类运行得到的结果数据。
在软件开发中,类是一个模板,可描述一类对象的行为和状态,对象是类的一个实例。软件对象的状态可以为其属性,软件对象的行为可通过方法体现。
本实施例中,程序包括第一类和第二类,第一类的运行依赖于第二类运行得到的结果数据。在程序外部创建第一类的对象和第二类的对象,使得第二类可以不包括第一类的对象。
举例来说,程序X包括三个类,分别为C类、B类和A类,其中,A类的运行依赖于B类运行得到的结果数据,B类的运行依赖于C类运行得到的结果数据。如此,上述第一类为A类时,上述第二类为B类。以及,上述第一类为B类时,上述第二类为C类。
在可行的实现方式中,例如,C类可用于采集数据,B类可用于处理数据,A类可用于输出数据,比如该输出方式为播放。
本实施例中,为了对三个类间的关系解绑定,可以在程序X的外部创建A类的对象a、B类的对象b、C类的对象c。如此,在对程序X中的类进行初始化或结束控制时,创建的这些对象可以不受影响。
如此,以第一类为A类,第二类为B类为例,在控制类初始化的过程中,由于已在程序X外部创建对象a,使得B类中可以不包括对象a,故而无需先初始化B类再初始化A类,而可以基于程序X外部创建的对象a先初始化A类,在A类初始化完成后再初始化B类。B类初始化完成后,B类运行并产生结果数据,由于此时A类已完成初始化,则不存在该结果数据不能提供给A类的情况,从而可以不存在上述问题1。
以及,在控制类结束的过程中,由于已在程序X外部创建对象a,使得B类中可以不包括对象a,故而可以先结束B类再结束A类,从而可以不存在上述问题2。此外,由于B类先于A类结束,则B类运行产生的结果数据可交给A类,在A类基于程序X外部创建的对象a,根据该结果数据运行完毕后,可以结束A类。
在本公开一个实施例中,为了说明一种创建上述第一对象和第二对象的可能实现方式,可以引入第三类,在程序的外层创建第三类,并在第三类中创建上述第一对象和第二对象。
以上述程序X为例,可以在程序X的外层创建D类,在D类中创建对象a、对象b以及对应于C类的对象c。即将程序中各个类的对象统一放在D类中管理,并由D类控制程序中每一类的初始化和结束流程。
基于上述内容,在步骤S210中创建好第一对象和第二对象后,可执行下述步骤S220。
步骤S220,在接收到对应所述程序的程序控制命令的情况下,根据所述程序控制命令的控制类型,确定对所述第一类和所述第二类的控制先后顺序。
基于上述内容,该程序控制命令可以为程序初始化控制命令,以用于控制程序进行初始化,以及还可以为程序结束控制命令,以用于控制程序结束。
本实施例中,基于上述内容可知,为避免程序异常,在程序初始化阶段对程序中类的控制先后顺序,与在程序结束阶段对程序中类的控制先后顺序不同。
比如,控制上述程序X初始化时,可以先控制A类初始化,再控制B类初始化,最后控制C类初始化,即控制先后顺序为A→B→C。以及,控制上述程序X结束时,可以先控制C类结束,再控制B类结束,最后控制A类结束,即控制先后顺序为C→B→A。
如此,步骤S220中,可以根据接收到的程序控制命令的控制类型,确定对程序中类的控制先后顺序。
步骤S230,基于所述控制先后顺序,根据所述第一对象对所述第一类进行对应所述程序控制命令的相应控制,以及根据所述第二对象对所述第二类进行对应所述程序控制命令的相应控制。
该步骤中,根据确定好的控制先后顺序,结合在程序外部创建好的相应对象,可顺序对程序中的类进行对应上述程序控制命令的相应控制。
其中,该程序控制命令为程序初始化控制命令时,可顺序控制程序中的类进行初始化,以及该程序控制命令为程序结束控制命令,可顺序控制程序中的类结束。
以上述程序X为例,控制上述程序X初始化时,可以先控制A类初始化,再控制B类初始化,最后控制C类初始化。而控制上述程序X结束时,可以先控制C类结束,再控制B类结束,最后控制A类结束。
在一种可能的实现方式中,电子设备在接收到程序初始化控制命令时,可以先控制A类初始化,A类初始化完成后可通知电子设备,电子设备进而可控制B类初始化,B类初始化完成后可通知电子设备,电子设备进而可控制C类初始化,C类初始化完成后可通知电子设备,从而完成对程序X的初始化控制。
对应地,电子设备在接收到程序结束控制命令时,可以先控制C类结束,C类结束后可通知电子设备,电子设备进而可控制B类结束,B类结束后可通知电子设备,电子设备进而可控制A类结束,A类结束后可通知电子设备,从而完成对程序X的结束控制。
本实施例中,通过在程序的外部创建程序中类的对象,使得程序中的类可以不再持有程序中其他类的对象,对程序中类的关系进行解绑定,从而在接收到程序控制命令的情况下,可结合程序控制命令的类型所决定的对程序中类的控制先后顺序,根据程序外部创建的对象对程序中的类进行对应程序控制命令的相应控制。由于本公开实施例不涉及类的嵌套调用即可实现对程序的控制,从而不存在因类的嵌套调用导致程序发生异常的问题。
下面,分别针对程序的初始化和程序的结束,作进一步的说明。
详细地,对于程序的初始化:
在本公开一个实施例中,所述程序控制命令包括程序初始化控制命令。如此,步骤S220中确定出的所述控制先后顺序包括:先控制所述第一类进行初始化再控制所述第二类进行初始化的控制顺序。
以上述程序X为例,该控制先后顺序为A→B→C。
基于此,上述步骤S230中,所述根据所述第一对象对所述第一类进行对应所述程序控制命令的相应控制,以及根据所述第二对象对所述第二类进行对应所述程序控制命令的相应控制,可以包括以下步骤A1~步骤A2:
步骤A1,根据所述第一对象控制所述第一类进行初始化。
以上述程序X为例,由于A类和B类的运行均依赖于程序中其他类运行得到的结果数据,则第一类可以为A类或B类。对应地,第二类可以为B类或C类。
步骤A2,在所述第一类初始化完成的情况下,根据所述第二对象控制所述第二类进行初始化。
该步骤中,在根据对象a控制A类初始化完成后,根据对象b控制B类初始化,以及在控制B类初始化完成后,根据对象c控制C类初始化。基于此可以避免存在上述问题1,从而可避免程序异常,支持程序更加合理的运行。
同上所述,在可行的实现方式中,可以在程序X的外层创建D类,在D类中创建对象a、对象b、对象c,以将程序中各个类的对象统一放在D类中管理,从而可由D类控制程序中每一类的初始化流程。
基于此,本实施例中,程序初始化控制过程具体可以为:D类根据对象a控制A类进行初始化,A类初始化完成后通知D类,D类收到该通知后进一步根据对象b控制B类进行初始化,B类初始化完成后通知D类,D类收到该通知后进一步根据对象c控制C类进行初始化。C类初始化完成后通知D类。
本实施例中,程序中的类在初始化完成之后及结束之前,可以循环运行。可选地,对于程序中的各个类,它们主要的任务可以各自运行在一个独立的不断循环的线程中。其中,第一类对应线程的每一次循环,都需要依赖于第二类对应线程的一次循环的结果数据。
以上述程序X为例,A类线程的每一次循环都依赖于B类线程的一次循环的结果数据,B类线程每一次循环都依赖于C类线程的一次循环的结果数据。
因此,可以在控制程序中的类进行初始化的过程中,创建并启动用于支持类运行的线程。基于此,在本公开一个实施例中,所述控制所述第一类进行初始化包括:启动用于支持所述第一类运行的第一线程。
以及,所述控制所述第二类初始化包括:启动用于支持所述第二类运行的第二线程。
本实施例中,类的初始化包括启动类的线程,以使类可在相应线程中循环运行。以上述程序X为例,在初始化程序X时,会依次启动A类的线程a、B类的线程b、C类的线程c。
在一种可行的实现方式中,在控制第一类初始化完成后,可控制第一类的线程处于阻塞状态,以等待第二类提供的结果数据,并在获得结果数据后可控制第一类开始运行。如此,可以保证第二类运行得到的结果数据可以提供给第一类,从而可以避免程序运行异常。
上面提到,上述第二类可以为B类或C类。两者不同之处在于,B类的运行需要其他类提供的结果数据,而C类的运行无需其他类提供的结果数据。如此,B类初始化后还不能开始运行,需要等待C类提供的结果数据,而C类初始化后即可直接开始运行。
对于最先初始化C类的实现方式,先初始化C类容易导致数据积累,从而导致程序出现延时,不适用于一些对实时性要求较高的场景。而与该最先初始化C类的实现方式不同,本实施例在最后初始化C类。由于C类较其他类在最后完成初始化,故本实施例支持C类初始化后无需等待可直接运行,使得本实施例在支持程序正常运行的同时,还不存在上述数据积累、程序出现延时的问题,从而可提高程序运行响应速率,适用于对实时性要求较高的场景。此外,本实施例对程序中类的初始化控制流程简单不繁琐。
基于此,可以根据第二类的运行是否依赖于其他类运行得到的结果数据这一区别,对上述第一类和第二类的运行控制进行说明。
基于上述内容,在所述第二类的运行不依赖于所述程序中其他类运行得到的结果数据的情况下,所述方法在所述第二线程启动完成之后还包括:控制所述第二类在所述第二线程中运行;控制所述第一类根据所述第二类在所述第二线程中运行得到的结果数据,在所述第一线程中运行。
以上述程序X为例,由于第二类的运行不依赖于其他类运行得到的结果数据,则第二类的C类,第一类为B类。如此,可以在控制C类初始化完成,即C类的线程启动完成后,控制C类在相应线程中运行。在C类运行生成结果数据后,可控制B类根据该结束数据在相应线程中运行。
基于上述内容,在所述第二类的运行依赖于所述程序中其他类运行得到的结果数据的情况下,所述方法在所述第二线程启动完成之后还包括:控制所述第二类根据所述其他类在相应线程中运行得到的结果数据,在所述第二线程中运行;控制所述第一类根据所述第二类在所述第二线程中运行得到的结果数据,在所述第一线程中运行。
以上述程序X为例,由于第二类的运行依赖于其他类运行得到的结果数据,则第二类的B类,第一类为A类。如此,可以在控制C类初始化完成,即C类的线程启动完成后,控制C类在相应线程中运行。在C类运行生成结果数据后,可控制B类根据该结束数据在相应线程中运行。进而,在B类运行生成结果数据后,可控制A类根据该结束数据在相应线程中运行。
基于上述内容可知,本实施例通过控制程序中类的按序运行,可避免程序异常运行,支持程序更加合理的运行。
上面提到,程序中的类在相应线程中会作循环运行。由于第一类在一次循环中用到的结果数据通常为第二类在相同次循环中生成的结果数据,故而为优化程序中各类的实时运行效果,可以在第一类的进程中创建消息队列,以缓存第二类运行生成的结果数据。如此,在第一类当前处理数据不够及时的情况下,第二类无需等待将结果数据提供给第一类,即可进行后续的循环运行,从而有益于提高程序运行的实时性。
基于此,在本公开一个实施例中,所述启动用于支持所述第一类运行的第一线程包括:在所述第一线程中创建消息队列。
本实施例中,类的线程的启动,包括在线程中创建消息队列,以使需使用的结果数据可被缓存至消息队列中。
以上述程序X为例,第一类可以为A类或B类,故而可以在A类的线程中创建消息队列,以用于存储B类运行得到的结果数据,以及在B类的线程中创建消息队列,以用于存储C类运行得到的结果数据。
基于此,所述方法在控制所述第二类在所述第二线程中运行之后,还包括:将所述第二类在所述第二线程中运行得到的结果数据存入所述消息队列中。
以上述A类为例,A类在相应线程中每一次循环运行时,若消息队列中混存有B类运行得到的结果数据,则可以读取消息队列中最先的结果数据,并据此完成当前次循环运行。
本实施例中,在控制第二类始终先于第一类执行同一循环,以避免程序运行异常的基础之上,基于运行结果数据在消息队列中的缓存,程序中各类在同一时间所循环的次数可以不一致,从而有益于提高程序运行的实时性。
详细地,对于程序的结束:
在本公开一个实施例中,所述程序控制命令包括程序结束控制命令。如此,步骤S220中确定出的所述控制先后顺序包括:先控制所述第二类结束运行再控制所述第一类结束运行的控制顺序。
以上述程序X为例,该控制先后顺序为C→B→A。
基于此,上述步骤S230中,所述根据所述第一对象对所述第一类进行对应所述程序控制命令的相应控制,以及根据所述第二对象对所述第二类进行对应所述程序控制命令的相应控制,可以包括以下步骤B1~步骤B2:
步骤B1,根据所述第二对象控制所述第二类结束运行。
以上述程序X为例,由于A类和B类的运行均依赖于程序中其他类运行得到的结果数据,则第一类可以为A类或B类。对应地,第二类可以为B类或C类。
本实施例中,先控制第二类结束,再控制第一类结束。如此,可以避免第二类运行得到的结果数据不能提供给第一类的问题。
步骤B2,在所述第二类已结束运行的情况下,根据所述第一对象控制所述第一类结束运行。
以上述程序X为例,先控制C类结束,再控制B类结束,最后控制A类结束。
本实施例中,由于第二类中不包括第一类的对象,则第二类的结束不会影响到当前尚未结束的第一类的运行,从而可以不存在上述问题2。
同上所述,在可行的实现方式中,可以在程序X的外层创建D类,在D类中创建对象a、对象b、对象c,以将程序中各个类的对象统一放在D类中管理,从而可由D类控制程序中每一类的结束流程。
基于此,本实施例中,程序结束控制过程具体可以为:D类根据对象c控制C类结束,C类结束后通知D类,D类收到该通知后进一步根据对象b控制B类结束,B类结束后通知D类,D类收到该通知后进一步根据对象a控制A类结束。A类结束后通知D类。
此外,所述方法在所述程序中任一类均已结束运行之后,还包括:销毁已创建的所述第一对象和所述第二对象。
本实施例中,待程序中所有类均结束之后,可销毁已创建的对象以释放资源,且不影响对程序中类的结束控制。各对象的销毁可以不作限定。
上面提到,程序中的类可以在相应独立线程中循环运行。如此,在结束类的过程中可结束启动的相应线程。
上面提到,以上述程序X为例,上述第二类可以为B类或C类。两者不同之处在于,B类的运行需要其他类提供的结果数据,而C类的运行无需其他类提供的结果数据。如此,需待C类线程结束后,才可结束B类线程,进而结束A类线程。
基于此,可以根据第二类的运行是否依赖于其他类运行得到的结果数据这一区别,对上述第一类和第二类的结束控制进行说明。
基于上述内容,在本发明一个实施例中,在所述第二类的运行不依赖于所述程序中其他类运行得到的结果数据的情况下,所述控制所述第二类结束运行包括:控制用于支持所述第二类运行的第二线程结束。
本实施例中,第二类为C类,第一类为B类。在接收到程序结束控制命令后,可直接控制C类结束,具体控制C类的线程结束。
对应地,所述控制所述第一类结束运行包括:在所述第二线程已结束的情况下,控制用于支持所述第一类运行的第一线程结束。
该步骤中,在C类线程结束后,才可结束B类线程。
基于上述内容,在本发明一个实施例中,在所述第二类的运行依赖于所述程序中其他类运行得到的结果数据的情况下,所述控制所述第二类结束运行包括:在用于支持所述其他类运行的相应线程已结束的情况下,控制用于支持所述第二类运行的第二线程结束。
本实施例中,第二类为B类,第一类为A类。在接收到程序结束控制命令后,可直接控制C类结束,具体控制C类的线程结束。在C类线程结束后,才可结束B类线程。
对应地,所述控制所述第一类结束运行包括:在所述第二线程已结束的情况下,控制用于支持所述第一类运行的第一线程结束。
该步骤中,在B类线程结束后,才可结束A类线程。
基于上述内容可知,本实施例通过控制程序中类的按序结束,可避免程序异常运行,支持程序更加合理的运行。
上面提到,为提高程序运行的实时性,可以在第一类的线程中创建消息队列,以用于缓存第二类在相应线程中运行得到的消息数据,以便于第一类据此在相应线程中运行。如此,在结束线程时,需在消息队列中无结果数据时才可结束。
基于此,在本公开一个实施例中,所述控制用于支持所述第一类运行的第一线程结束,包括:在所述第一线程中创建的消息队列中没有结果数据的情况下,控制所述第一线程结束。其中,所述消息队列用于存放所述第二类在所述第二线程中运行得到的结果数据。
本实施例中,第一类的线程包括消息队列,若消息队列中没有结果数据,才可结束相应线程。
以上述程序X为例,在C类线程结束后,若B类线程的消息队列中无结果数据,可结束B类线程。以及,在B类线程结束后,若A类线程的消息队列中无结果数据,可结束A类线程。
本实施例中,通过在第一类的线程中创建消息队列以缓存待使用的消息数据,有益于提高程序运行的实时性。在需要结束程序中,可在消息队列中无结果数据时结束相应线程,从而可支持程序中各类的准确按序结束,避免程序发生异常。
在本公开一个实施例中,由于程序中各个类对应的线程通常是一直循环的,故而可以在线程中设置用于表示是否需要结束线程的标志位,该标志位至少可以有两个取值。比如取值1表示继续循环运动,取值2表示结束线程。电子设备在接收到程序结束控制命令后,控制线程结束的步骤可以包括:将线程中该标志位的取值更改上述取值2。线程在运行至该标志位处时,基于该取值2可以结束循环运行并退出。
本实施例中,通过在线程中设置标识位,可根据标志位的具体取值,准确控制各个类相应线程的按序结束,有益于程序更加合理的运行。
图3给出了根据一实施例的程序控制方法的流程示意图。本实施例的实施主体例如为图1中的电子设备1000或包括该电子设备1000。
如图3所示,该实施例的方法可以包括如下步骤S310~步骤S370:
步骤S310,对于包括第一类和第二类的程序,在所述程序的外部创建所述第一类的第一对象和所述第二类的第二对象,其中,所述第一类的运行依赖于所述第二类运行得到的结果数据。
步骤S320,在接收到对应所述程序的程序初始化控制命令的情况下,确定先控制所述第一类进行初始化再控制所述第二类进行初始化的控制顺序。
步骤S330,基于所述控制顺序,根据所述第一对象控制所述第一类进行初始化,以启动用于支持第一类运行的第一线程并在第一线程中创建消息队列;在所述第一类初始化完成的情况下,根据所述第二对象控制所述第二类进行初始化,以启动用于支持第二类运行的第二线程。
步骤S340,控制所述第二类在所述第二线程中运行,将所述第二类在所述第二线程中运行得到的结果数据存入所述消息队列中,并控制所述第一类根据所述消息队列中的结果数据,在所述第一线程中运行。
步骤S350,在接收到对应所述程序的程序结束控制命令的情况下,确定先控制所述第二类结束运行再控制所述第一类结束运行的控制顺序。
步骤S360,基于所述控制先后顺序,根据所述第二对象控制所述第二类结束运行,使得所述第二线程结束;在所述第二类已结束运行且所述消息队列中没有结果数据的情况下,根据所述第一对象控制所述第一类结束运行,使得所述第一线程结束。
步骤S370,销毁已创建的所述第一对象和所述第二对象。
本实施例中,通过在程序的外部创建程序中类的对象,使得程序中的类可以不再持有程序中其他类的对象,对程序中类的关系进行解绑定,从而在接收到程序控制命令的情况下,可结合程序控制命令的类型所决定的对程序中类的控制先后顺序,根据程序外部创建的对象对程序中的类进行对应程序控制命令的相应控制。由于本公开实施例不涉及类的嵌套调用即可实现对程序的控制,从而不存在因类的嵌套调用导致程序发生异常的问题。
本实施例提供的程序控制方法可以实现更加合理的程序运行控制,有益于提高程序的可扩展性和灵活性,能够避免程序异常情况的发生。
<设备实施例>
图4是根据一个实施例的程序控制装置400的原理框图。如图4所示,该程序控制装置400可以包括创建模块410、确定模块420、控制模块430。该程序控制装置400例如为图1中的电子设备1000或包括该电子设备1000。
其中,创建模块410用于对于包括第一类和第二类的程序,在所述程序的外部创建所述第一类的第一对象和所述第二类的第二对象,其中,所述第一类的运行依赖于所述第二类运行得到的结果数据。确定模块420在接收到对应所述程序的程序控制命令的情况下,根据所述程序控制命令的控制类型,确定对所述第一类和所述第二类的控制先后顺序。控制模块430基于所述控制先后顺序,根据所述第一对象对所述第一类进行对应所述程序控制命令的相应控制,以及根据所述第二对象对所述第二类进行对应所述程序控制命令的相应控制。
在本公开一个实施例中,所述程序控制命令包括程序初始化控制命令。所述控制先后顺序包括:先控制所述第一类进行初始化再控制所述第二类进行初始化的控制顺序。所述控制模块430根据所述第一对象控制所述第一类进行初始化;在所述第一类初始化完成的情况下,根据所述第二对象控制所述第二类进行初始化。
在本公开一个实施例中,所述控制模块430启动用于支持所述第一类运行的第一线程,启动用于支持所述第二类运行的第二线程;在所述第二类的运行不依赖于所述程序中其他类运行得到的结果数据的情况下,控制所述第二类在所述第二线程中运行;控制所述第一类根据所述第二类在所述第二线程中运行得到的结果数据,在所述第一线程中运行。
在本公开一个实施例中,所述控制模块430启动用于支持所述第一类运行的第一线程,启动用于支持所述第二类运行的第二线程;在所述第二类的运行依赖于所述程序中其他类运行得到的结果数据的情况下,控制所述第二类根据所述其他类在相应线程中运行得到的结果数据,在所述第二线程中运行;控制所述第一类根据所述第二类在所述第二线程中运行得到的结果数据,在所述第一线程中运行。
在本公开一个实施例中,所述控制模块430在所述第一线程中创建消息队列;在控制所述第二类在所述第二线程中运行之后,将所述第二类在所述第二线程中运行得到的结果数据存入所述消息队列中。
在本公开一个实施例中,所述程序控制命令包括程序结束控制命令。所述控制先后顺序包括:先控制所述第二类结束运行再控制所述第一类结束运行的控制顺序。所述控制模块430根据所述第二对象控制所述第二类结束运行;在所述第二类已结束运行的情况下,根据所述第一对象控制所述第一类结束运行;所述方法在所述程序中任一类均已结束运行之后,还包括:销毁已创建的所述第一对象和所述第二对象。
在本公开一个实施例中,所述控制模块430在所述第二类的运行不依赖于所述程序中其他类运行得到的结果数据的情况下,控制用于支持所述第二类运行的第二线程结束,在所述第二线程已结束的情况下,控制用于支持所述第一类运行的第一线程结束。
在本公开一个实施例中,所述控制模块430在所述第二类的运行依赖于所述程序中其他类运行得到的结果数据,且用于支持所述其他类运行的相应线程已结束的情况下,控制用于支持所述第二类运行的第二线程结束;在所述第二线程已结束的情况下,控制用于支持所述第一类运行的第一线程结束。
在本公开一个实施例中,所述控制模块430在所述第一线程中创建的消息队列中没有结果数据的情况下,控制所述第一线程结束;其中,所述消息队列用于存放所述第二类在所述第二线程中运行得到的结果数据。
图5是根据另一个实施例的程序控制装置500的硬件结构示意图。
如图5所示,该程序控制装置500包括处理器510和存储器520,该存储器520用于存储可执行的计算机程序,该处理器510用于根据该计算机程序的控制,执行如以上任意方法实施例的方法。
该程序控制装置500例如为图1中的电子设备1000或包括该电子设备1000。
以上程序控制装置500的各模块可以由本实施例中的处理器510执行存储器520存储的计算机程序实现,也可以通过其他电路结构实现,在此不做限定。
本发明可以是系统、方法和/或计算机程序产品。计算机程序产品可以包括计算机可读存储介质,其上载有用于使处理器实现本发明的各个方面的计算机可读程序指令。
计算机可读存储介质可以是可以保持和存储由指令执行设备使用的指令的有形设备。计算机可读存储介质例如可以是――但不限于――电存储设备、磁存储设备、光存储设备、电磁存储设备、半导体存储设备或者上述的任意合适的组合。计算机可读存储介质的更具体的例子(非穷举的列表)包括:便携式计算机盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、静态随机存取存储器(SRAM)、便携式压缩盘只读存储器(CD-ROM)、数字多功能盘(DVD)、记忆棒、软盘、机械编码设备、例如其上存储有指令的打孔卡或凹槽内凸起结构、以及上述的任意合适的组合。这里所使用的计算机可读存储介质不被解释为瞬时信号本身,诸如无线电波或者其他自由传播的电磁波、通过波导或其他传输媒介传播的电磁波(例如,通过光纤电缆的光脉冲)、或者通过电线传输的电信号。
这里所描述的计算机可读程序指令可以从计算机可读存储介质下载到各个计算/处理设备,或者通过网络、例如因特网、局域网、广域网和/或无线网下载到外部计算机或外部存储设备。网络可以包括铜传输电缆、光纤传输、无线传输、路由器、防火墙、交换机、网关计算机和/或边缘服务器。每个计算/处理设备中的网络适配卡或者网络接口从网络接收计算机可读程序指令,并转发该计算机可读程序指令,以供存储在各个计算/处理设备中的计算机可读存储介质中。
用于执行本发明操作的计算机程序指令可以是汇编指令、指令集架构(ISA)指令、机器指令、机器相关指令、微代码、固件指令、状态设置数据、或者以一种或多种编程语言的任意组合编写的源代码或目标代码,所述编程语言包括面向对象的编程语言—诸如Smalltalk、C++等,以及常规的过程式编程语言—诸如“C”语言或类似的编程语言。计算机可读程序指令可以完全地在用户计算机上执行、部分地在用户计算机上执行、作为一个独立的软件包执行、部分在用户计算机上部分在远程计算机上执行、或者完全在远程计算机或服务器上执行。在涉及远程计算机的情形中,远程计算机可以通过任意种类的网络—包括局域网(LAN)或广域网(WAN)—连接到用户计算机,或者,可以连接到外部计算机(例如利用因特网服务提供商来通过因特网连接)。在一些实施例中,通过利用计算机可读程序指令的状态信息来个性化定制电子电路,例如可编程逻辑电路、现场可编程门阵列(FPGA)或可编程逻辑阵列(PLA),该电子电路可以执行计算机可读程序指令,从而实现本发明的各个方面。
这里参照根据本发明实施例的方法、装置(系统)和计算机程序产品的流程图和/或框图描述了本发明的各个方面。应当理解,流程图和/或框图的每个方框以及流程图和/或框图中各方框的组合,都可以由计算机可读程序指令实现。
这些计算机可读程序指令可以提供给通用计算机、专用计算机或其它可编程数据处理装置的处理器,从而生产出一种机器,使得这些指令在通过计算机或其它可编程数据处理装置的处理器执行时,产生了实现流程图和/或框图中的一个或多个方框中规定的功能/动作的装置。也可以把这些计算机可读程序指令存储在计算机可读存储介质中,这些指令使得计算机、可编程数据处理装置和/或其他设备以特定方式工作,从而,存储有指令的计算机可读介质则包括一个制造品,其包括实现流程图和/或框图中的一个或多个方框中规定的功能/动作的各个方面的指令。
也可以把计算机可读程序指令加载到计算机、其它可编程数据处理装置、或其它设备上,使得在计算机、其它可编程数据处理装置或其它设备上执行一系列操作步骤,以产生计算机实现的过程,从而使得在计算机、其它可编程数据处理装置、或其它设备上执行的指令实现流程图和/或框图中的一个或多个方框中规定的功能/动作。
附图中的流程图和框图显示了根据本发明的多个实施例的系统、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段或指令的一部分,所述模块、程序段或指令的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个连续的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或动作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。对于本领域技术人员来说公知的是,通过硬件方式实现、通过软件方式实现以及通过软件和硬件结合的方式实现都是等价的。
以上已经描述了本发明的各实施例,上述说明是示例性的,并非穷尽性的,并且也不限于所披露的各实施例。在不偏离所说明的各实施例的范围和精神的情况下,对于本技术领域的普通技术人员来说许多修改和变更都是显而易见的。本文中所用术语的选择,旨在最好地解释各实施例的原理、实际应用或对市场中的技术改进,或者使本技术领域的其它普通技术人员能理解本文披露的各实施例。本发明的范围由所附权利要求来限定。
Claims (10)
1.一种程序控制方法,包括:
对于包括第一类和第二类的程序,在所述程序的外部创建所述第一类的第一对象和所述第二类的第二对象,其中,所述第一类的运行依赖于所述第二类运行得到的结果数据;
在接收到对应所述程序的程序控制命令的情况下,根据所述程序控制命令的控制类型,确定对所述第一类和所述第二类的控制先后顺序,其中,所述程序控制命令包括程序初始化控制命令和结束控制命令;
基于所述控制先后顺序,根据所述第一对象对所述第一类进行初始化或者结束运行,以及根据所述第二对象对所述第二类进行初始化或者结束运行。
2.根据权利要求1所述的方法,其中,在所述程序控制命令为所述程序初始化控制命令的情况下,所述控制先后顺序包括:先控制所述第一类进行初始化再控制所述第二类进行初始化的控制顺序;
所述根据所述第一对象对所述第一类进行初始化,以及根据所述第二对象对所述第二类进行初始化,包括:
根据所述第一对象控制所述第一类进行初始化;
在所述第一类初始化完成的情况下,根据所述第二对象控制所述第二类进行初始化。
3.根据权利要求2所述的方法,其中,所述控制所述第一类进行初始化包括:启动用于支持所述第一类运行的第一线程;
所述控制所述第二类初始化包括:启动用于支持所述第二类运行的第二线程;
在所述第二类的运行不依赖于所述程序中其他类运行得到的结果数据的情况下,所述方法在所述第二线程启动完成之后还包括:
控制所述第二类在所述第二线程中运行;
控制所述第一类根据所述第二类在所述第二线程中运行得到的结果数据,在所述第一线程中运行;
或者,
在所述第二类的运行依赖于所述程序中其他类运行得到的结果数据的情况下,所述方法在所述第二线程启动完成之后还包括:
控制所述第二类根据所述其他类在相应线程中运行得到的结果数据,在所述第二线程中运行;
控制所述第一类根据所述第二类在所述第二线程中运行得到的结果数据,在所述第一线程中运行。
4.根据权利要求3所述的方法,其中,所述启动用于支持所述第一类运行的第一线程包括:在所述第一线程中创建消息队列;
所述方法在控制所述第二类在所述第二线程中运行之后,还包括:将所述第二类在所述第二线程中运行得到的结果数据存入所述消息队列中。
5.根据权利要求1所述的方法,其中,在所述程序控制命令为所述程序结束控制命令的情况下,所述控制先后顺序包括:先控制所述第二类结束运行再控制所述第一类结束运行的控制顺序;
所述根据所述第一对象对所述第一类进行结束运行,以及根据所述第二对象对所述第二类进行结束运行,包括:
根据所述第二对象控制所述第二类结束运行;
在所述第二类已结束运行的情况下,根据所述第一对象控制所述第一类结束运行;
所述方法在所述程序中任一类均已结束运行之后,还包括:销毁已创建的所述第一对象和所述第二对象。
6.根据权利要求5所述的方法,其中,在所述第二类的运行不依赖于所述程序中其他类运行得到的结果数据的情况下,所述控制所述第二类结束运行包括:控制用于支持所述第二类运行的第二线程结束;
所述控制所述第一类结束运行包括:在所述第二线程已结束的情况下,控制用于支持所述第一类运行的第一线程结束;
或者,
在所述第二类的运行依赖于所述程序中其他类运行得到的结果数据的情况下,所述控制所述第二类结束运行包括:在用于支持所述其他类运行的相应线程已结束的情况下,控制用于支持所述第二类运行的第二线程结束;
所述控制所述第一类结束运行包括:在所述第二线程已结束的情况下,控制用于支持所述第一类运行的第一线程结束。
7.根据权利要求6所述的方法,其中,所述控制用于支持所述第一类运行的第一线程结束,包括:
在所述第一线程中创建的消息队列中没有结果数据的情况下,控制所述第一线程结束;
其中,所述消息队列用于存放所述第二类在所述第二线程中运行得到的结果数据。
8.一种程序控制装置,包括:
创建模块,用于对于包括第一类和第二类的程序,在所述程序的外部创建所述第一类的第一对象和所述第二类的第二对象,其中,所述第一类的运行依赖于所述第二类运行得到的结果数据;
确定模块,用于在接收到对应所述程序的程序控制命令的情况下,根据所述程序控制命令的控制类型,确定对所述第一类和所述第二类的控制先后顺序,其中,所述程序控制命令包括程序初始化控制命令和结束控制命令;以及,
控制模块,用于基于所述控制先后顺序,根据所述第一对象对所述第一类进行初始化或者结束运行,以及根据所述第二对象对所述第二类进行初始化或者结束运行。
9.一种程序控制装置,包括存储器和处理器,所述存储器用于存储计算机程序;所述处理器用于执行所述计算机程序,以实现根据权利要求1-7中任意一项所述的方法。
10.一种计算机可读存储介质,所述计算机可读存储介质上存储计算机程序,所述计算机程序在被处理器执行时实现根据权利要求1-7中任意一项所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110609122.0A CN113342427B (zh) | 2021-06-01 | 2021-06-01 | 程序控制方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110609122.0A CN113342427B (zh) | 2021-06-01 | 2021-06-01 | 程序控制方法及装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN113342427A CN113342427A (zh) | 2021-09-03 |
CN113342427B true CN113342427B (zh) | 2022-08-16 |
Family
ID=77472637
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202110609122.0A Active CN113342427B (zh) | 2021-06-01 | 2021-06-01 | 程序控制方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN113342427B (zh) |
Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5870585A (en) * | 1995-10-10 | 1999-02-09 | Advanced Micro Devices, Inc. | Design for a simulation module using an object-oriented programming language |
Family Cites Families (15)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7464149B2 (en) * | 2004-04-30 | 2008-12-09 | International Business Machines Corporation | System and method for managing introspectable objects in an enterprise |
JP2007065837A (ja) * | 2005-08-30 | 2007-03-15 | Nippon Telegr & Teleph Corp <Ntt> | 状態制御方法、状態制御プログラムおよび状態制御プログラムを記録した記録媒体 |
US8042099B2 (en) * | 2007-05-30 | 2011-10-18 | Red Hat, Inc. | Facilitating availability of object data types at runtime |
CN104243483A (zh) * | 2014-09-24 | 2014-12-24 | 海信集团有限公司 | 一种消息处理方法和装置 |
US10223163B2 (en) * | 2016-07-14 | 2019-03-05 | Microsoft Technology Licensing, Llc | Workflow-based object destruction |
CN106874001A (zh) * | 2017-02-17 | 2017-06-20 | 济南浪潮高新科技投资发展有限公司 | 一种脚本封装方法和装置以及脚本运行方法和装置 |
CN107220342A (zh) * | 2017-05-26 | 2017-09-29 | 郑州云海信息技术有限公司 | 一种分布式数据库的控制方法及系统 |
CN107562516A (zh) * | 2017-08-07 | 2018-01-09 | 北京金山安全管理系统技术有限公司 | 多线程处理方法和装置、存储介质及处理器 |
CN108241491B (zh) * | 2018-01-04 | 2022-02-08 | 武汉斗鱼网络科技有限公司 | 一种图文混排方法及装置 |
CN110968147B (zh) * | 2018-09-30 | 2022-04-12 | 武汉斗鱼网络科技有限公司 | 定时器创建的方法、装置、电子设备及介质 |
CN109885340B (zh) * | 2019-01-10 | 2022-06-10 | 北京字节跳动网络技术有限公司 | 一种应用程序冷启动加速方法、装置、电子设备 |
CN110175071B (zh) * | 2019-04-09 | 2021-07-30 | 南昌嘉研科技有限公司 | 一种多线程程序架构方法及架构系统 |
CN112527403B (zh) * | 2019-09-19 | 2022-07-05 | 荣耀终端有限公司 | 一种应用启动方法及电子设备 |
US11409578B2 (en) * | 2019-11-27 | 2022-08-09 | International Business Machines Corporation | Resilient adaptive biased locking in multi-thread concurrent program execution |
CN112491426B (zh) * | 2020-11-17 | 2022-05-10 | 中国人民解放军战略支援部队信息工程大学 | 面向多核dsp的服务组件通信架构及任务调度、数据交互方法 |
-
2021
- 2021-06-01 CN CN202110609122.0A patent/CN113342427B/zh active Active
Patent Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5870585A (en) * | 1995-10-10 | 1999-02-09 | Advanced Micro Devices, Inc. | Design for a simulation module using an object-oriented programming language |
Also Published As
Publication number | Publication date |
---|---|
CN113342427A (zh) | 2021-09-03 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US7484220B2 (en) | Method, software and apparatus for using application state history information when re-launching applications | |
WO2018157850A1 (zh) | 多线程分段下载方法、设备、客户端设备、电子设备及存储介质 | |
US20130086571A1 (en) | Dynamically Updating Firmware In A Computing System | |
JP5710434B2 (ja) | アシスト・ハードウエア・スレッドの拡張可能な状態追跡のための方法、情報処理システム、およびプロセッサ | |
US9009716B2 (en) | Creating a thread of execution in a computer processor | |
US9043806B2 (en) | Information processing device and task switching method | |
CN110609755A (zh) | 跨区块链节点的消息处理方法及装置、设备、介质 | |
CN111158756A (zh) | 用于处理信息的方法和装置 | |
CN112925718A (zh) | 调用栈回溯方法、装置、设备和介质 | |
WO2013035246A1 (ja) | 仮想計算機制御装置、仮想計算機制御方法、仮想計算機制御プログラム、及び集積回路 | |
CN111801653A (zh) | 用于多线程数据处理环境的线程调度 | |
CN113342427B (zh) | 程序控制方法及装置 | |
CN110825461B (zh) | 数据处理方法和装置 | |
US11853153B2 (en) | Multi-thread exit method and mobile terminal | |
US10169078B2 (en) | Managing thread execution in a multitasking computing environment | |
CN115904644A (zh) | 任务调度方法、电子设备和计算机程序产品 | |
CN113760403A (zh) | 状态机联动方法和装置 | |
US9201688B2 (en) | Configuration of asynchronous message processing in dataflow networks | |
JP5332716B2 (ja) | 起動制御方法、情報処理装置及びプログラム | |
US20210055971A1 (en) | Method and node for managing a request for hardware acceleration by means of an accelerator device | |
CN110633137A (zh) | 一种应用程序的安装包启动方法、装置及电子设备 | |
CN114416381B (zh) | 处理资源超分方法、装置、设备及存储介质 | |
CN112506592A (zh) | 页面加载时长的确定方法、装置、设备和存储介质 | |
CN117992131B (zh) | 数据处理方法、装置、设备和介质 | |
CN110647405A (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 | ||
GR01 | Patent grant | ||
GR01 | Patent grant |