CN104267955A - 一种程序启停时模块间运行依赖的消除方法 - Google Patents
一种程序启停时模块间运行依赖的消除方法 Download PDFInfo
- Publication number
- CN104267955A CN104267955A CN201410508681.2A CN201410508681A CN104267955A CN 104267955 A CN104267955 A CN 104267955A CN 201410508681 A CN201410508681 A CN 201410508681A CN 104267955 A CN104267955 A CN 104267955A
- Authority
- CN
- China
- Prior art keywords
- module
- modulea
- privately owned
- interface
- private privileges
- 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
Landscapes
- Stored Programmes (AREA)
Abstract
本发明提供一种程序启停时模块间运行依赖的消除方法,包括以下步骤:提供模块私有资源初始化接口和模块私有线程启动接口;提供模块私有资源释放接口和模块私有线程停止接口;程序启动时,先调用各模块的私有资源初始化接口,然后调用各模块的私有线程启动接口;程序停止时,先调用各模块的私有线程停止接口,然后调用各模块的私有资源释放接口。本发明提供一种程序启停时模块间运行依赖的消除方法,通过确立模块的启动和停止接口形式、程序的启动和停止调用方式来解决运行依赖问题。
Description
技术领域
本发明涉及一种消除方法,具体涉及一种程序启停时模块间运行依赖的消除方法。
背景技术
对于模块启动和停止的接口封装,传统方法都提供一个启动接口,一个停止接口。其中,启动接口包括模块的私有资源创建和线程启动(如果存在),停止接口包括模块的线程停止(如果存在)和私有资源释放。
现有针对模块启动和停止的接口封装模式,容易导致存在多个运行依赖模块的程序无法正常启动和停止。
假设存在运行依赖的两个模块moduleA和moduleB,如果moduleA先停止,将导致moduleB无法运行并会因为moduleB访问moduleA的资源而崩溃;先停止moduleB,则会导致moduleA无法访问moduleB资源而崩溃。对于程序的启动流程,存在同样问题。
发明内容
为了克服上述现有技术的不足,本发明提供一种程序启停时模块间运行依赖的消除方法,通过确立模块的启动和停止接口形式、程序的启动和停止调用方式来解决运行依赖问题。
为了实现上述发明目的,本发明采取如下技术方案:
本发明提供一种程序启停时模块间运行依赖的消除方法,所述方法包括以下步骤:
步骤1:提供模块私有资源初始化接口和模块私有线程启动接口;
步骤2:提供模块私有资源释放接口和模块私有线程停止接口;
步骤3:程序启动时,先调用各模块的私有资源初始化接口,然后调用各模块的私有线程启动接口;
步骤4:程序停止时,先调用各模块的私有线程停止接口,然后调用各模块的私有资源释放接口。
所述步骤1中,设moduleA表示模块,如果模块存在私有资源和私有线程,则接口需提供两个,基本形式分别为:
moduleA_init_res(),实现模块moduleA的私有资源创建;
moduleA_start_thd(),实现模块moduleA的私有线程启动;
如果模块不存在私有线程,则接口只需提供一个,基本形式为:
moduleA_init_res(),实现模块moduleA的私有资源创建。
所述步骤2中,设moduleA表示模块,如果模块存在私有资源和私有线程,则接口需提供两个,基本形式分别为:
moduleA_destroy_res(),实现模块moduleA的私有资源释放;
moduleA_stop_thd(),实现模块moduleA的私有线程停止;
如果模块不存在私有线程,则接口只需提供一个,基本形式为:
moduleA_destroy_res(),实现模块moduleA的私有资源释放。
所述步骤3中,程序的启动分为两个阶段:第一阶段创建所有模块需要的私有资源;第二阶段启动相关模块的私有线程。
在第一阶段中,设moduleA、moduleB、moduleC均表示模块,如果各个模块存在私有资源,则接口的基本形式分别为:
moduleA_init_res(),实现模块moduleA的私有资源创建;
moduleB_init_res(),实现模块moduleB的私有资源创建;
moduleC_init_res(),实现模块moduleC的私有资源创建;
在第二阶段,设moduleA、moduleB、moduleC均表示模块,如果各个模块存在私有线程,则接口的基本形式分别为:
moduleA_start_thd(),实现模块moduleA的私有线程启动;
moduleB_start_thd(),实现模块moduleB的私有线程启动;
moduleC_start_thd(),实现模块moduleC的私有线程启动。
所述步骤4中,程序的停止分为两个阶段:第一阶段停止相关模块的私有线程;第二阶段释放所有模块的私有资源。
在第一阶段,设moduleA、moduleB、moduleC均表示模块,如果各个模块存在私有线程,则接口的基本形式分别为:
moduleA_stop_thd(),实现模块moduleA的私有线程停止;
moduleB_stop_thd(),实现模块moduleB的私有线程停止;
moduleC_stop_thd(),实现模块moduleC的私有线程停止;
在第二阶段,设moduleA、moduleB、moduleC均表示模块,如果各个模块存在私有资源,则接口的基本形式分别为:
moduleA_destroy_res(),实现模块moduleA的私有资源释放;
moduleB_destroy_res(),实现模块moduleB的私有资源释放;
moduleC_destroy_res(),实现模块moduleC的私有资源释放。
与现有技术相比,本发明的有益效果在于:
本发明通过将模块的私有线程和私有资源相区分,并要求分别提供私有线程的启动和停止接口、私有资源的创建和释放接口。在程序启动时,要求确保先完成所有模块的资源创建,然后完成所有模块的线程启动;在程序停止时,要求确保先完成所有模块的线程退出,然后完成所有模块的资源释放。从而解决了模块启动和退出都将线程和私有资源绑定,导致存在运行依赖的多个模块无法正常启动和释放的问题。本发明有效解决了一种分布式文件系统中,在程序启动时,可消除模块间相互依赖问题;在程序退出时,可避免模块间运行依赖导致退出异常问题。
附图说明
图1是本发明实施例中程序启停时模块间运行依赖的消除方法流程图;
图2是本发明实施例中程序启动过程中接口调用示意图;
图3是本发明实施例中程序停止过程中接口调用示意图。
具体实施方式
下面结合附图对本发明作进一步详细说明。
如图1,本发明提供一种程序启停时模块间运行依赖的消除方法,所述方法包括以下步骤:
步骤1:提供模块私有资源初始化接口和模块私有线程启动接口;
步骤2:提供模块私有资源释放接口和模块私有线程停止接口;
步骤3:程序启动时,先调用各模块的私有资源初始化接口,然后调用各模块的私有线程启动接口;
步骤4:程序停止时,先调用各模块的私有线程停止接口,然后调用各模块的私有资源释放接口。
所述步骤1中,设moduleA表示模块,如果模块存在私有资源和私有线程,则接口需提供两个,基本形式分别为:
moduleA_init_res(),实现模块moduleA的私有资源创建;
moduleA_start_thd(),实现模块moduleA的私有线程启动;
如果模块不存在私有线程,则接口只需提供一个,基本形式为:
moduleA_init_res(),实现模块moduleA的私有资源创建。
所述步骤2中,设moduleA表示模块,如果模块存在私有资源和私有线程,则接口需提供两个,基本形式分别为:
moduleA_destroy_res(),实现模块moduleA的私有资源释放;
moduleA_stop_thd(),实现模块moduleA的私有线程停止;
如果模块不存在私有线程,则接口只需提供一个,基本形式为:
moduleA_destroy_res(),实现模块moduleA的私有资源释放。
如图2,所述步骤3中,程序的启动分为两个阶段:第一阶段创建所有模块需要的私有资源;第二阶段启动相关模块的私有线程。
在第一阶段中,设moduleA、moduleB、moduleC均表示模块,如果各个模块存在私有资源,则接口的基本形式分别为:
moduleA_init_res(),实现模块moduleA的私有资源创建;
moduleB_init_res(),实现模块moduleB的私有资源创建;
moduleC_init_res(),实现模块moduleC的私有资源创建;
在第二阶段,设moduleA、moduleB、moduleC均表示模块,如果各个模块存在私有线程,则接口的基本形式分别为:
moduleA_start_thd(),实现模块moduleA的私有线程启动;
moduleB_start_thd(),实现模块moduleB的私有线程启动;
moduleC_start_thd(),实现模块moduleC的私有线程启动。
如图3,所述步骤4中,程序的停止分为两个阶段:第一阶段停止相关模块的私有线程;第二阶段释放所有模块的私有资源。
在第一阶段,设moduleA、moduleB、moduleC均表示模块,如果各个模块存在私有线程,则接口的基本形式分别为:
moduleA_stop_thd(),实现模块moduleA的私有线程停止;
moduleB_stop_thd(),实现模块moduleB的私有线程停止;
moduleC_stop_thd(),实现模块moduleC的私有线程停止;
在第二阶段,设moduleA、moduleB、moduleC均表示模块,如果各个模块存在私有资源,则接口的基本形式分别为:
moduleA_destroy_res(),实现模块moduleA的私有资源释放;
moduleB_destroy_res(),实现模块moduleB的私有资源释放;
moduleC_destroy_res(),实现模块moduleC的私有资源释放。
最后应当说明的是:以上实施例仅用以说明本发明的技术方案而非对其限制,所属领域的普通技术人员参照上述实施例依然可以对本发明的具体实施方式进行修改或者等同替换,这些未脱离本发明精神和范围的任何修改或者等同替换,均在申请待批的本发明的权利要求保护范围之内。
Claims (7)
1.一种程序启停时模块间运行依赖的消除方法,其特征在于:所述方法包括以下步骤:
步骤1:提供模块私有资源初始化接口和模块私有线程启动接口;
步骤2:提供模块私有资源释放接口和模块私有线程停止接口;
步骤3:程序启动时,先调用各模块的私有资源初始化接口,然后调用各模块的私有线程启动接口;
步骤4:程序停止时,先调用各模块的私有线程停止接口,然后调用各模块的私有资源释放接口。
2.根据权利要求1所述的程序启停时模块间运行依赖的消除方法,其特征在于:所述步骤1中,设moduleA表示模块,如果模块存在私有资源和私有线程,则接口需提供两个,基本形式分别为:
moduleA_init_res(),实现模块moduleA的私有资源创建;
moduleA_start_thd(),实现模块moduleA的私有线程启动;
如果模块不存在私有线程,则接口只需提供一个,基本形式为:
moduleA_init_res(),实现模块moduleA的私有资源创建。
3.根据权利要求1所述的程序启停时模块间运行依赖的消除方法,其特征在于:所述步骤2中,设moduleA表示模块,如果模块存在私有资源和私有线程,则接口需提供两个,基本形式分别为:
moduleA_destroy_res(),实现模块moduleA的私有资源释放;
moduleA_stop_thd(),实现模块moduleA的私有线程停止;
如果模块不存在私有线程,则接口只需提供一个,基本形式为:
moduleA_destroy_res(),实现模块moduleA的私有资源释放。
4.根据权利要求1所述的程序启停时模块间运行依赖的消除方法,其特征在于:所述步骤3中,程序的启动分为两个阶段:第一阶段创建所有模块需要的私有资源;第二阶段启动相关模块的私有线程。
5.根据权利要求4所述的程序启停时模块间运行依赖的消除方法,其特征在于:在第一阶段中,设moduleA、moduleB、moduleC均表示模块,如果各个模块存在私有资源,则接口的基本形式分别为:
moduleA_init_res(),实现模块moduleA的私有资源创建;
moduleB_init_res(),实现模块moduleB的私有资源创建;
moduleC_init_res(),实现模块moduleC的私有资源创建;
在第二阶段,设moduleA、moduleB、moduleC均表示模块,如果各个模块存在私有线程,则接口的基本形式分别为:
moduleA_start_thd(),实现模块moduleA的私有线程启动;
moduleB_start_thd(),实现模块moduleB的私有线程启动;
moduleC_start_thd(),实现模块moduleC的私有线程启动。
6.根据权利要求1所述的程序启停时模块间运行依赖的消除方法,其特征在于:所述步骤4中,程序的停止分为两个阶段:第一阶段停止相关模块的私有线程;第二阶段释放所有模块的私有资源。
7.根据权利要求6所述的程序启停时模块间运行依赖的消除方法,其特征在于:在第一阶段,设moduleA、moduleB、moduleC均表示模块,如果各个模块存在私有线程,则接口的基本形式分别为:
moduleA_stop_thd(),实现模块moduleA的私有线程停止;
moduleB_stop_thd(),实现模块moduleB的私有线程停止;
moduleC_stop_thd(),实现模块moduleC的私有线程停止;
在第二阶段,设moduleA、moduleB、moduleC均表示模块,如果各个模块存在私有资源,则接口的基本形式分别为:
moduleA_destroy_res(),实现模块moduleA的私有资源释放;
moduleB_destroy_res(),实现模块moduleB的私有资源释放;
moduleC_destroy_res(),实现模块moduleC的私有资源释放。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410508681.2A CN104267955B (zh) | 2014-09-28 | 2014-09-28 | 一种程序启停时模块间运行依赖的消除方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410508681.2A CN104267955B (zh) | 2014-09-28 | 2014-09-28 | 一种程序启停时模块间运行依赖的消除方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN104267955A true CN104267955A (zh) | 2015-01-07 |
CN104267955B CN104267955B (zh) | 2017-11-07 |
Family
ID=52159479
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201410508681.2A Active CN104267955B (zh) | 2014-09-28 | 2014-09-28 | 一种程序启停时模块间运行依赖的消除方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN104267955B (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106997314A (zh) * | 2016-01-22 | 2017-08-01 | 广州市动景计算机科技有限公司 | 用于分布式系统的异常处理方法、装置及系统 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101477458A (zh) * | 2008-12-15 | 2009-07-08 | 浙江大学 | 基于处理器和fpga混合架构的硬件线程执行方法 |
CN101599029A (zh) * | 2009-07-09 | 2009-12-09 | 浪潮电子信息产业股份有限公司 | 一种flex中利用事件机制在模块间传递数据的方法 |
US20130117758A1 (en) * | 2011-11-08 | 2013-05-09 | Philip Alexander Cuadra | Compute work distribution reference counters |
CN103281528A (zh) * | 2013-04-10 | 2013-09-04 | 深圳康佳通信科技有限公司 | 一种流媒体解码方法、系统及移动终端 |
-
2014
- 2014-09-28 CN CN201410508681.2A patent/CN104267955B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101477458A (zh) * | 2008-12-15 | 2009-07-08 | 浙江大学 | 基于处理器和fpga混合架构的硬件线程执行方法 |
CN101599029A (zh) * | 2009-07-09 | 2009-12-09 | 浪潮电子信息产业股份有限公司 | 一种flex中利用事件机制在模块间传递数据的方法 |
US20130117758A1 (en) * | 2011-11-08 | 2013-05-09 | Philip Alexander Cuadra | Compute work distribution reference counters |
CN103281528A (zh) * | 2013-04-10 | 2013-09-04 | 深圳康佳通信科技有限公司 | 一种流媒体解码方法、系统及移动终端 |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106997314A (zh) * | 2016-01-22 | 2017-08-01 | 广州市动景计算机科技有限公司 | 用于分布式系统的异常处理方法、装置及系统 |
CN106997314B (zh) * | 2016-01-22 | 2020-10-16 | 阿里巴巴(中国)有限公司 | 用于分布式系统的异常处理方法、装置及系统 |
Also Published As
Publication number | Publication date |
---|---|
CN104267955B (zh) | 2017-11-07 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
GB2543196A (en) | Efficient management and configuration of in-band resources | |
PH12017550118A1 (en) | Management of commitments and requests extracted from communications and content | |
CN106201574B (zh) | 一种应用界面的启动方法及装置 | |
CN102439564A (zh) | 在Linux容器中启动应用程序的方法和系统 | |
WO2014113337A3 (en) | Healing cloud services during upgrades | |
CN104503783A (zh) | 一种呈现服务器硬件初始化程度的方法及服务器 | |
RU2016144305A (ru) | Подключение публичного облака к ресурсам частной сети | |
JP2015515682A5 (zh) | ||
CN112418794B (zh) | 一种业务流转的方法及装置 | |
CN110868435B (zh) | 一种裸金属服务器调度方法、装置及存储介质 | |
BR112017011541A2 (zh) | The handling of the lock request and the server | |
CN103780428A (zh) | 应用于云架构的集中式资源管理方法及系统 | |
US9760454B2 (en) | High availability method and system for improving the utility of physical servers in cloud computing resource pool | |
CN106708573B (zh) | 一种用于Hadoop集群自动安装的系统及方法 | |
CN104991822A (zh) | 一种管理内存的方法和装置 | |
WO2019000790A1 (zh) | 一种以同步方式进行远程过程调用的方法及装置 | |
CN104702534A (zh) | 一种实现多进程共享端口的数据处理的方法及装置 | |
CN106131020B (zh) | 一种防火墙虚拟化的模块以及管理方法 | |
CN113467884A (zh) | 资源配置方法和装置、电子设备及计算机可读存储介质 | |
CN113032093B (zh) | 分布式计算方法、装置及平台 | |
CN105204814A (zh) | 一种Android系统的声卡切换方法及系统 | |
CN102917017A (zh) | 一种通用的虚拟机克隆时ip自动配置的方法 | |
CN104267955A (zh) | 一种程序启停时模块间运行依赖的消除方法 | |
CN102238032A (zh) | 一种基于缓存服务器的系统参数管理的方法 | |
CN109217994B (zh) | 数据传输方法、装置及计算机可读存储介质 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant | ||
TR01 | Transfer of patent right | ||
TR01 | Transfer of patent right |
Effective date of registration: 20191008 Address after: 110002 No.1 Shuguang street, Liaodongwan New District, Panjin City, Liaoning Province Co-patentee after: Sugon Information Industry Co., Ltd. Patentee after: Dawning Information System (Liaoning) Co., Ltd. Address before: 300384 Tianjin city Xiqing District Huayuan Industrial Zone (outer ring) Haitai Huake Street No. 15 1-3 Patentee before: Sugon Information Industry Co., Ltd. |