CN105068861A - 一种事务执行方法及装置 - Google Patents
一种事务执行方法及装置 Download PDFInfo
- Publication number
- CN105068861A CN105068861A CN201510405188.2A CN201510405188A CN105068861A CN 105068861 A CN105068861 A CN 105068861A CN 201510405188 A CN201510405188 A CN 201510405188A CN 105068861 A CN105068861 A CN 105068861A
- Authority
- CN
- China
- Prior art keywords
- affairs
- thread
- perform
- execution
- idle
- 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.)
- Pending
Links
Landscapes
- Telephonic Communication Services (AREA)
Abstract
本发明公开了一种事务执行方法及装置,涉及计算机技术,本发明实施例提供的事务执行方法,在每次达到设定周期后,启动空闲线程,按照预先设定的顺序,调用事务并执行该事务当前所要执行的阶段,从而可以实现在同一时刻有多个线程分别执行多个事务,若周期时长设置的较佳,则可以实现N事务在同一时刻由N个线程分别执行,从而提高了事务的执行效率,由于周期性启动空闲线程,再由空闲线程顺序执行事务,事务的增减、事务阶段的划分和设定的周期等都可以灵活修改,提高了事务调用的灵活性。
Description
技术领域
本发明涉及计算机技术,尤其涉及一种事务执行方法及装置。
背景技术
目前,计算机在事务执行时,为提高事务执行的效率,通常采用计算机流水线机制和多线程机制。
计算机流水线机制:现代的计算机一般通过多级流水线可以实现一条指令执行的几个阶段并发进行,这样平均来看可以达到每个时钟周期完成一条指令的效果。
多线程:线程是一个事务执行单位,每个线程可单独执行自己的事务,通过分时复用以及多核的技术,可以让多个线程同时工作,提高效率。
同步、顺序地调用处理方法:一般情况下,若有多个事务需要处理,需要顺序的执行事务A,事务B,事务C,事务D等等,此时,后一级事务的开始依赖于前一级事务的完成,且新的一轮事务依赖于本轮的最后一个事务完成。
一般情况下,当有多项事务需要处理时,需要同步、顺序地调用每一项事务,这样才能保证每项事务按照顺序被依次完成。但是这样往往会造成资源的浪费(并行度不高),而且影响整体执行的效率。如图1所示,4个事务顺序执行,一轮事务执行需要总时间为:t1+t2+t3+t4,而且在每一项事务执行时,只有该事务的资源被占用,其他事务的资源是空闲的,造成了浪费。
为提高执行效率,可以采用并行机制,在第一轮事务B执行的同时另一个线程执行事务A,这样A和B可以“同时”执行。采用并行机制时,同一时刻多项资源均可被调用。但是这样的软件机制是固定的,针对特定情况编码出的软件无法应用在新的情况中,新的情况若采用并行机制需要重新设计编写、调试软件,占用大量的软件开发时间。
并且,因为同步、顺序调用机制,普通并行机制结构已固定,在运行时无法完成事务的“热插拔”。若要增加或者删除一项事务,需要软件全部停止并重新搭建事务链运行,如此便会降低效率,影响用户体验。
发明内容
本发明实施例提供一种事务执行方法及装置,以提高事务的执行效率,并提高事务调用的灵活性。
本发明实施例提供的一种事务执行方法,包括:
确定达到设定周期后,启动一个空闲线程;
通过该线程按照预先设定的顺序,调用事务并执行该事务当前所要执行的阶段,每个事务在同一时刻仅由一个线程执行。
进一步,所述确定达到设定周期后,启动一个空闲线程,具体包括:
确定达到设定周期后,从线程池中选取一个空闲的线程,并唤醒该线程;
此时,所述通过该线程按照预先设定的顺序,调用事务并执行该事务当前所要执行的阶段后,还包括:
确定线程中的所有事务当前所要执行的阶段均执行完成后,线程进入空闲状态,回归到线程池。
较佳的,所述确定达到设定周期,具体包括:
通过滴答驱动确定达到设定周期。
进一步,每个事务在同一时刻仅由一个线程执行,具体包括:
每个事务在执行时继承同一个公共基类,所述公共基类用于使事务在一个线程执行结束之前禁止被其它线程调用。
进一步,该方法还包括:
调用所要执行的事务失败时,等待设定时间后,再调用并执行该事务;
或者
调用所要执行的事务失败时,线程进入空闲状态,回归到线程池。
更进一步,各事务通过构造函数和回调处理函数实现事务具体功能。
本发明实施例还提供一种事务执行装置,包括:
启动单元,用于确定达到设定周期后,启动一个空闲线程;
执行单元,用于通过该线程按照预先设定的顺序,调用事务并执行该事务当前所要执行的阶段,每个事务在同一时刻仅由一个线程执行。
进一步,所述启动单元具体用于:
确定达到设定周期后,从线程池中选取一个空闲的线程,并唤醒该线程;
此时,所述执行单元还用于:
确定线程中的所有事务当前所要执行的阶段均执行完成后,线程进入空闲状态,回归到线程池。
进一步,每个事务在同一时刻仅由一个线程执行,具体包括:
每个事务在执行时,都继承同一个公共基类,所述公共基类用于使事务在一个线程执行结束之前禁止被其它线程调用。
进一步,所述执行单元还用于:
调用所要执行的事务失败时,等待设定时间后,再调用并执行该事务;
或者
调用所要执行的事务失败时,线程进入空闲状态,回归到线程池。
本发明实施例提供一种事务执行方法及装置,在每次达到设定周期后,启动空闲线程,按照预先设定的顺序,调用事务并执行该事务当前所要执行的阶段,从而可以实现在同一时刻有多个线程分别执行多个事务,若周期时长设置的较佳,则可以实现N事务在同一时刻由N个线程分别执行,从而提高了事务的执行效率,由于周期性启动空闲线程,再由空闲线程顺序执行事务,事务的增减、事务阶段的划分和设定的周期等都可以灵活修改,提高了事务调用的灵活性。
附图说明
图1为现有技术中的事务执行耗时示意图;
图2为本发明实施例提供的事务执行方法流程图;
图3为本发明实施例提供的事务执行方法的事务执行耗时示意图;
图4为本发明实施例提供的事务执行方法中事务的继承关系示意图;
图5为本发明实施例提供的事务执行装置结构示意图。
具体实施方式
本发明实施例提供一种事务执行方法及装置,在每次达到设定周期后,启动空闲线程,按照预先设定的顺序,调用事务并执行该事务当前所要执行的阶段,从而可以实现在同一时刻有多个线程分别执行多个事务,若周期时长设置的较佳,则可以实现N事务在同一时刻由N个线程分别执行,从而提高了事务的执行效率,由于周期性启动空闲线程,再由空闲线程顺序执行事务,事务的增减、事务阶段的划分和设定的周期等都可以灵活修改,提高了事务调用的灵活性。
如图2所示,本发明实施例提供的事务执行方法,包括:
步骤S201、确定达到设定周期后,启动一个空闲线程;
步骤S202、通过该线程按照预先设定的顺序,调用事务并执行该事务当前所要执行的阶段,每个事务在同一时刻仅由一个线程执行。
由于每次达到设定周期后,都启动一个线程顺序执行事务,可以使得同一时刻有多个线程分别执行多个事务,多个事务的资源均被占用,提高了事务的执行效率和资源的利用率。并且,周期性启动空闲线程,再由空闲线程顺序执行事务,事务的增减、周期和线程的控制都可以灵活修改,提高了事务调用的灵活性。
例如,第一个周期启动的线程执行完第一事务的第一阶段后,开始执行第二事务的第一阶段,此时,第二个周期启动的线程开始执行第一事务的第二阶段,第二事务的第一阶段和第一事务的第二阶段是由不同的线程同时执行的,从而提高了事务执行效率。
如图3所示,第一个周期启动的线程执行完第一事务的第一阶段后,开始执行第二事务的第一阶段,此时,第二个周期启动的线程开始执行第一事务的第二阶段,第一个周期启动的线程执行完第二事务的第一阶段后,开始执行第三事务的第一阶段,此时,第二个周期启动的线程开始执行第二事务的第二阶段,第三个周期启动的线程开始执行第一事务的第三个阶段。
事务的数量和每个事务划分的阶段的数量越接近,其事务的执行效率越高,理论上,当二者相等时,可达到事务执行效率的峰值,在实际操作中,可以根据事务的具体情况进行阶段的划分。
进一步,在步骤S201中,确定达到设定周期后,启动一个空闲线程,具体包括:
确定达到设定周期后,从线程池中选取一个空闲的线程,并唤醒该线程;
此时,在步骤S202通过该线程按照预先设定的顺序,调用事务并执行该事务当前所要执行的阶段后,还包括:
确定线程中的所有事务当前所要执行的阶段均执行完成后,线程进入空闲状态,回归到线程池。
本发明实施例中的线程有时被称为轻量级进程,是程序执行流的最小单元。线程池是一种多线程处理形式,处理过程中将事务添加到队列,然后在启动线程后顺序调用这些事务。
本发明实施例中,可以通过通过滴答驱动来确定是否达到设定周期。
为确保每个事务在同一时刻仅由一个线程执行,可以在具体实现时,使每个事务在执行时继承同一个公共基类,公共基类用于使事务在一个线程执行结束之前禁止被其它线程调用。各事务可以通过构造函数和回调处理函数实现事务具体功能。
通过该方式实现每个事务在同一时刻仅由一个线程执行时,每个线程开始后,其本身无须关心与其他线程的并行关系。每个事务共同继承一个公共基类,在该公共基类中实现了事务的互斥,即不可重入性。这样同一个事务在结束之前不会被另外一个线程调用,保证了单个事务的唯一性。由于嘀嗒驱动以时间T为周期启动,即每T时间开始“一串”事务,因此可得一轮事务的平均执行时间也为T,提高了执行效率。
如图4所示,每个具体事务需要继承一个公共基类,该公共基类中已经实现了公用的方法,具体事务仅需实现构造函数createNew()以及回调处理函数doProcess()——即实现事务具体的功能。从这一点也能够看出本发明实施例提供的事务执行方法容易拓展,灵活性高。
进一步,本发明实施例提供的事务执行方法还包括:
调用所要执行的事务失败时,等待设定时间后,再调用并执行该事务;或者,调用所要执行的事务失败时,线程进入空闲状态,回归到线程池。
若调用所要执行的事务失败时,等待设定时间后,再调用并执行该事务,该设定时间可以根据实际情况设定,若是由于事务的前一阶段正在被其它线程执行而导致的调用失败,则事务的执行效率更高;若调用所要执行的事务失败时,线程进入空闲状态,回归到线程池,则适用的情况更多,更有利于***的稳定且更容易扩展。
本发明实施例还提供一种事务执行装置,如图5所示,包括:
启动单元501,用于确定达到设定周期后,启动一个空闲线程;
执行单元502,用于通过该线程按照预先设定的顺序,调用事务并执行该事务当前所要执行的阶段,每个事务在同一时刻仅由一个线程执行。
其中,启动单元501具体用于:
确定达到设定周期后,从线程池中选取一个空闲的线程,并唤醒该线程;
此时,执行单元502还用于:
确定线程中的所有事务当前所要执行的阶段均执行完成后,线程进入空闲状态,回归到线程池。
进一步,每个事务在同一时刻仅由一个线程执行,具体包括:
每个事务在执行时,都继承同一个公共基类,公共基类用于使事务在一个线程执行结束之前禁止被其它线程调用。
进一步,执行单元502还用于:
调用所要执行的事务失败时,等待设定时间后,再调用并执行该事务;
或者
调用所要执行的事务失败时,线程进入空闲状态,回归到线程池。
本发明实施例提供一种事务执行方法及装置,在每次达到设定周期后,启动空闲线程,按照预先设定的顺序,调用事务并执行该事务当前所要执行的阶段,从而可以实现在同一时刻有多个线程分别执行多个事务,若周期时长设置的较佳,则可以实现N事务在同一时刻由N个线程分别执行,从而提高了事务的执行效率,由于周期性启动空闲线程,再由空闲线程顺序执行事务,事务的增减、事务阶段的划分和设定的周期等都可以灵活修改,提高了事务调用的灵活性。
本领域内的技术人员应明白,本发明的实施例可提供为方法、***、或计算机程序产品。因此,本发明可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本发明可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本发明是参照根据本发明实施例的方法、设备(***)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
尽管已描述了本发明的优选实施例,但本领域内的技术人员一旦得知了基本创造性概念,则可对这些实施例作出另外的变更和修改。所以,所附权利要求意欲解释为包括优选实施例以及落入本发明范围的所有变更和修改。
显然,本领域的技术人员可以对本发明进行各种改动和变型而不脱离本发明的精神和范围。这样,倘若本发明的这些修改和变型属于本发明权利要求及其等同技术的范围之内,则本发明也意图包含这些改动和变型在内。
Claims (10)
1.一种事务执行方法,其特征在于,包括:
确定达到设定周期后,启动一个空闲线程;
通过该线程按照预先设定的顺序,调用事务并执行该事务当前所要执行的阶段,每个事务在同一时刻仅由一个线程执行。
2.如权利要求1所述的方法,其特征在于,所述确定达到设定周期后,启动一个空闲线程,具体包括:
确定达到设定周期后,从线程池中选取一个空闲的线程,并唤醒该线程;
所述通过该线程按照预先设定的顺序,调用事务并执行该事务当前所要执行的阶段后,还包括:
确定线程中的所有事务当前所要执行的阶段均执行完成后,线程进入空闲状态,回归到线程池。
3.如权利要求1或2所述的方法,其特征在于,所述确定达到设定周期,具体包括:
通过滴答驱动确定达到设定周期。
4.如权利要求1所述的方法,其特征在于,每个事务在同一时刻仅由一个线程执行,具体包括:
每个事务在执行时继承同一个公共基类,所述公共基类用于使事务在一个线程执行结束之前禁止被其它线程调用。
5.如权利要求4所述的方法,其特征在于,还包括:
调用所要执行的事务失败时,等待设定时间后,再调用并执行该事务;
或者
调用所要执行的事务失败时,线程进入空闲状态,回归到线程池。
6.如权利要求4所述的方法,其特征在于,各事务通过构造函数和回调处理函数实现事务具体功能。
7.一种事务执行装置,其特征在于,包括:
启动单元,用于确定达到设定周期后,启动一个空闲线程;
执行单元,用于通过该线程按照预先设定的顺序,调用事务并执行该事务当前所要执行的阶段,每个事务在同一时刻仅由一个线程执行。
8.如权利要求7所述的装置,其特征在于,所述启动单元具体用于:
确定达到设定周期后,从线程池中选取一个空闲的线程,并唤醒该线程;
所述执行单元还用于:
确定线程中的所有事务当前所要执行的阶段均执行完成后,线程进入空闲状态,回归到线程池。
9.如权利要求7所述的装置,其特征在于,每个事务在同一时刻仅由一个线程执行,具体包括:
每个事务在执行时,都继承同一个公共基类,所述公共基类用于使事务在一个线程执行结束之前禁止被其它线程调用。
10.如权利要求9所述的装置,其特征在于,所述执行单元还用于:
调用所要执行的事务失败时,等待设定时间后,再调用并执行该事务;
或者
调用所要执行的事务失败时,线程进入空闲状态,回归到线程池。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510405188.2A CN105068861A (zh) | 2015-07-09 | 2015-07-09 | 一种事务执行方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510405188.2A CN105068861A (zh) | 2015-07-09 | 2015-07-09 | 一种事务执行方法及装置 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN105068861A true CN105068861A (zh) | 2015-11-18 |
Family
ID=54498239
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201510405188.2A Pending CN105068861A (zh) | 2015-07-09 | 2015-07-09 | 一种事务执行方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN105068861A (zh) |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107729137A (zh) * | 2017-09-04 | 2018-02-23 | 上海壹账通金融科技有限公司 | 服务器、区块链验签解密的方法及存储介质 |
CN110351345A (zh) * | 2019-06-25 | 2019-10-18 | 阿里巴巴集团控股有限公司 | 用于业务请求处理的方法及装置 |
CN111083202A (zh) * | 2019-11-28 | 2020-04-28 | 中科驭数(北京)科技有限公司 | Tcp/ip加速器多连接交互方法和装置 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1873615A (zh) * | 2006-01-20 | 2006-12-06 | 华为技术有限公司 | 一种定时器任务服务方法 |
US20070283361A1 (en) * | 2004-07-06 | 2007-12-06 | Jean-Bernard Blanchet | Processor Time-Sharing Method |
CN101887361A (zh) * | 2009-05-14 | 2010-11-17 | 灰熊(北京)科技有限公司 | 一种在多线程环境下高效处理延时任务的方法 |
CN102594891A (zh) * | 2012-02-17 | 2012-07-18 | 中国科学院计算技术研究所 | 用于处理远程过程调用请求的方法及*** |
CN104615413A (zh) * | 2015-02-13 | 2015-05-13 | 赛诺威盛科技(北京)有限公司 | 一种流水线任务自适应并行方法 |
-
2015
- 2015-07-09 CN CN201510405188.2A patent/CN105068861A/zh active Pending
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20070283361A1 (en) * | 2004-07-06 | 2007-12-06 | Jean-Bernard Blanchet | Processor Time-Sharing Method |
CN1873615A (zh) * | 2006-01-20 | 2006-12-06 | 华为技术有限公司 | 一种定时器任务服务方法 |
CN101887361A (zh) * | 2009-05-14 | 2010-11-17 | 灰熊(北京)科技有限公司 | 一种在多线程环境下高效处理延时任务的方法 |
CN102594891A (zh) * | 2012-02-17 | 2012-07-18 | 中国科学院计算技术研究所 | 用于处理远程过程调用请求的方法及*** |
CN104615413A (zh) * | 2015-02-13 | 2015-05-13 | 赛诺威盛科技(北京)有限公司 | 一种流水线任务自适应并行方法 |
Cited By (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107729137A (zh) * | 2017-09-04 | 2018-02-23 | 上海壹账通金融科技有限公司 | 服务器、区块链验签解密的方法及存储介质 |
CN107729137B (zh) * | 2017-09-04 | 2021-06-22 | 深圳壹账通智能科技有限公司 | 服务器、区块链验签解密的方法及存储介质 |
CN110351345A (zh) * | 2019-06-25 | 2019-10-18 | 阿里巴巴集团控股有限公司 | 用于业务请求处理的方法及装置 |
CN110351345B (zh) * | 2019-06-25 | 2021-10-12 | 创新先进技术有限公司 | 用于业务请求处理的方法及装置 |
CN111083202A (zh) * | 2019-11-28 | 2020-04-28 | 中科驭数(北京)科技有限公司 | Tcp/ip加速器多连接交互方法和装置 |
CN111083202B (zh) * | 2019-11-28 | 2021-03-26 | 中科驭数(北京)科技有限公司 | Tcp/ip加速器多连接交互方法和装置 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
AU2018203641B2 (en) | Controlling tasks performed by a computing system | |
CA2767667C (en) | Fault tolerant batch processing | |
JP2011507112A5 (zh) | ||
CN105068861A (zh) | 一种事务执行方法及装置 | |
CN111198689B (zh) | 一种代码执行方法、装置及计算机可读存储介质 | |
CN110737533B (zh) | 一种任务调度方法、装置及电子设备和存储介质 | |
CN110968412B (zh) | 一种任务执行方法、***及存储介质 | |
CN110716987B (zh) | 一种同步任务异步执行的方法和调度*** | |
CN111399969B (zh) | 一种虚拟资源编排***、方法、装置、介质和设备 | |
CN107479864B (zh) | MapReduce计算框架的平台移植方法和装置 | |
AU2014274491B2 (en) | Fault tolerant batch processing | |
CN114327412A (zh) | 一种基于多线程支持异步的流程编排方法及*** | |
CN113778742A (zh) | 程序执行方法,程序处理方法以及相关设备 | |
CN115454613A (zh) | Ddl任务的分布式处理方法、节点及分布式数据库*** |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
WD01 | Invention patent application deemed withdrawn after publication |
Application publication date: 20151118 |
|
WD01 | Invention patent application deemed withdrawn after publication |