CN113485809A - 一种解决业务过程耗时高的方法 - Google Patents
一种解决业务过程耗时高的方法 Download PDFInfo
- Publication number
- CN113485809A CN113485809A CN202110794139.8A CN202110794139A CN113485809A CN 113485809 A CN113485809 A CN 113485809A CN 202110794139 A CN202110794139 A CN 202110794139A CN 113485809 A CN113485809 A CN 113485809A
- Authority
- CN
- China
- Prior art keywords
- state
- thread
- task
- executing
- updating
- 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
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/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
-
- 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/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
- G06F9/5027—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
- G06F9/5038—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals considering the execution order of a plurality of tasks, e.g. taking priority or time dependency constraints into consideration
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Debugging And Monitoring (AREA)
Abstract
本发明涉及一种解决业务过程耗时高的方法,包括以下步骤:S1:在任务状态记录器中记录线程任务的状态;S2:在执行当前线程任务时,判断当前线程任务是否处于初始化状态,若是,则执行S3,若不是,则执行S4;S3:对处于初始化状态的线程任务进行更新,若更新成功,则执行当前线程任务的业务代码,并在执行结束后继续执行S4;若更新失败,则再次检查当前线程任务是否处于初始化状态,若不是,则执行S4;若是,则进行自旋操作;S4:遍历任务状态记录器中所有线程任务的状态,若有处于初始化状态的线程任务,则执行S3。本发明通过检测任务状态记录器中记录的状态,进行识别并及时执行处于初始化状态的线程任务,解决了业务过程耗时高的问题。
Description
技术领域
本发明涉及业务处理技术领域,特别涉及一种解决业务过程耗时高的方法。
背景技术
在业务流程中,通常包含多个线程任务需要执行。而现有技术中,执行业务中线程任务的方式为:在线程任务封装后,将线程任务丢给线程池执行;在执行过程中,至于线程任务什么时候被执行则不得而知,而主线程需要等待所有线程任务执行完毕并进行合并结果后才可以继续往下执行,但如果线程任务中某些很快执行,某些延迟执行,便会造成业务过程非常耗时等问题。
因此有必要提供一种解决业务过程耗时高的方法,以解决现有技术中多个接口交互时,同一个批次任务中某些任务执行不及时带来的耗时高的问题。
发明内容
本发明的目的在于提供一种解决业务过程耗时高的方法,以解决现有技术中多个接口交互时,同一个批次任务中某些任务执行不及时带来的耗时高的问题。
为了解决上述问题,本发明提供了一种解决业务过程耗时高的方法,包括以下步骤:
S1:记录同一个线程生成的所有线程任务,并在任务状态记录器中记录所述线程任务的状态;
S2:在执行当前线程任务时,判断当前线程任务是否处于初始化状态,若是,则执行S3,若不是,则执行S4;
S3:对处于初始化状态的线程任务进行更新,若更新成功,则执行当前线程任务的业务代码,并在执行结束后将被执行的线程任务的状态更改为成功状态或失败状态,并继续执行S4;若更新失败,则再次检查当前线程任务是否处于初始化状态,若不是,则执行S4;若是,则进行自旋操作;
S4:获取任务状态记录器中记录的所述线程任务的状态,遍历所有线程任务的状态,若有处于初始化状态的线程任务,则执行S3,若没有,则唤醒等待中的业务主线程。
可选的,在所述解决业务过程耗时高的方法中,S1中,记录所述线程任务的状态,状态包括初始化状态、成功状态、失败状态和执行中状态。
可选的,在所述解决业务过程耗时高的方法中,对处于初始化状态的线程任务进行更新的方式为:
通过CAS更新当前线程任务的状态,其中CAS为Compare and Swap;
若更新成功,则当前线程任务的状态改为执行中,并执行所述线程任务的业务代码,
若更新失败,则再次检查当前线程任务是否处于初始化状态,若不是,则执行S4;若是,则进行自旋操作。
可选的,在所述解决业务过程耗时高的方法中,在S3中,将被执行的线程任务的状态更改为成功状态或失败状态之后,任务计数器中的计数减一。
可选的,在所述解决业务过程耗时高的方法中,任务计数器中的计数减为0后,通过线程之间的协作唤醒等待中的业务主线程,继续往下执行业务。
可选的,在所述解决业务过程耗时高的方法中,在S3中,自旋操作的方式如下:
持续更新,直到更新成功或当前线程任务被其他线程更新后退出持续更新的动作,以达到执行所述线程任务的业务代码的目的。
在本发明所提供的解决业务过程耗时高的方法中,在多个接口交互时通过检测任务状态记录器中记录的状态,进行识别并及时执行处于初始化状态的线程任务,并在线程任务处理完成后以事件驱动的方式唤醒等待中的业务主线程,解决了业务过程耗时高的问题。
附图说明
图1为本发明实施例提供的实施方法的流程图。
具体实施方式
下面将结合示意图对本发明的具体实施方式进行更详细的描述。根据下列描述,本发明的优点和特征将更清楚。需说明的是,附图均采用非常简化的形式且均使用非精准的比例,仅用以方便、明晰地辅助说明本发明实施例的目的。
如果本文所述的方法包括一系列步骤,则本文所呈现的这些步骤的顺序并非必须是可执行这些步骤的唯一顺序,且一些所述的步骤可被省略和/或一些本文未描述的其他步骤可被添加到该方法中。
现有技术中,执行业务中线程任务的方式为:在线程任务封装后,将线程任务丢给线程池执行;在执行过程中,至于线程任务什么时候被执行则不得而知,而主线程需要等待所有线程任务执行完毕并进行合并结果后才可以继续往下执行,但如果线程任务中某些很快执行,某些延迟执行,便会造成业务过程非常耗时等问题。
因此有必要提供一种解决业务过程耗时高的方法,如图1所示,图1为本发明实施例提供的实施方法的流程图,包括以下步骤:
S1:记录同一个线程生成的所有线程任务,并在任务状态记录器中记录所述线程任务的状态,其中,所述任务状态记录器可以是一个方便遍历的集合或者非循环链表;
S2:在执行当前线程任务时,判断当前线程任务是否处于初始化状态,若是,则执行S3,若不是,则执行S4;
S3:对处于初始化状态的线程任务进行更新,若更新成功,则执行当前线程任务的业务代码,并在执行结束后将被执行的线程任务的状态更改为成功状态或失败状态,并继续执行S4;若更新失败,则再次检查当前线程任务是否处于初始化状态,若不是,则执行S4;若是,则进行自旋操作;
S4:获取任务状态记录器中记录的所述线程任务的状态,遍历所有线程任务的状态,若有处于初始化状态的线程任务,则执行S3,若没有,则唤醒等待中的业务主线程。
本发明能有效的利用硬件资源,高效处理业务,降低业务处理耗时,提升用户体验。
通常的,S1中,记录所述线程任务的状态,状态包括初始化状态、成功状态、失败状态和执行中状态。
进一步的,对处于初始化状态的线程任务进行更新的方式为:
通过CAS更新当前线程任务的状态,其中CAS为Compare and Swap;
若更新成功,则当前线程任务的状态改为执行中,并执行所述线程任务的业务代码,
若更新失败,则再次检查当前线程任务是否处于初始化状态,若不是,则执行S4;若是,则进行自旋操作。
优选的,在S3中,将被执行的线程任务的状态更改为成功状态或失败状态之后,任务计数器中的计数减一。
进一步的,任务计数器中的计数减为0后,通过线程之间的协作唤醒等待中的业务主线程,继续往下执行业务。
本发明在业务过程中,由系统产出当前需要调用的接口,根据需要调用接口动态生成为线程任务,并生成一个相应数量的任务计数器,在对应线程任务处理完后,当前线程需要对任务计数器进行减一操作,并判断当前任务计数器的计数是否已经归零,如果已经归零(此时,遍历所有线程任务的状态,没有处于初始化状态的线程任务),则通过线程之间的协作唤醒等待中的业务主线程,继续往下执行业务。
较佳的,在S3中,自旋操作的方式如下:持续更新,直到更新成功或当前线程任务被其他线程更新后退出持续更新的动作,以达到执行所述线程任务的业务代码的目的。
综上,在本发明所提供的解决业务过程耗时高的方法中,在多个接口交互时通过检测任务状态记录器中记录的状态,进行识别并及时执行处于初始化状态的线程任务,并在线程任务处理完成后以事件驱动的方式唤醒等待中的业务主线程,解决了业务过程耗时高的问题。
上述仅为本发明的优选实施例而已,并不对本发明起到任何限制作用。任何所属技术领域的技术人员,在不脱离本发明的技术方案的范围内,对本发明揭露的技术方案和技术内容做任何形式的等同替换或修改等变动,均属未脱离本发明的技术方案的内容,仍属于本发明的保护范围之内。
Claims (6)
1.一种解决业务过程耗时高的方法,其特征在于,包括以下步骤:
S1:记录同一个线程生成的所有线程任务,并在任务状态记录器中记录所述线程任务的状态;
S2:在执行当前线程任务时,判断当前线程任务是否处于初始化状态,若是,则执行S3,若不是,则执行S4;
S3:对处于初始化状态的线程任务进行更新,若更新成功,则执行当前线程任务的业务代码,并在执行结束后将被执行的线程任务的状态更改为成功状态或失败状态,并继续执行S4;若更新失败,则再次检查当前线程任务是否处于初始化状态,若不是,则执行S4;若是,则进行自旋操作;
S4:获取任务状态记录器中记录的所述线程任务的状态,遍历所有线程任务的状态,若有处于初始化状态的线程任务,则执行S3,若没有,则唤醒等待中的业务主线程。
2.如权利要求1所述的解决业务过程耗时高的方法,其特征在于,S1中,记录所述线程任务的状态,状态包括初始化状态、成功状态、失败状态和执行中状态。
3.如权利要求1所述的解决业务过程耗时高的方法,其特征在于,对处于初始化状态的线程任务进行更新的方式为:
通过CAS更新当前线程任务的状态,其中CAS为Compare and Swap;
若更新成功,则当前线程任务的状态改为执行中,并执行所述线程任务的业务代码,
若更新失败,则再次检查当前线程任务是否处于初始化状态,若不是,则执行S4;若是,则进行自旋操作。
4.如权利要求1所述的解决业务过程耗时高的方法,其特征在于,在S3中,将被执行的线程任务的状态更改为成功状态或失败状态之后,任务计数器中的计数减一。
5.如权利要求4所述的解决业务过程耗时高的方法,其特征在于,任务计数器中的计数减为0后,通过线程之间的协作唤醒等待中的业务主线程,继续往下执行业务。
6.如权利要求1所述的解决业务过程耗时高的方法,其特征在于,在S3中,自旋操作的方式如下:
持续更新,直到更新成功或当前线程任务被其他线程更新后退出持续更新的动作,以达到执行所述线程任务的业务代码的目的。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110794139.8A CN113485809B (zh) | 2021-07-14 | 2021-07-14 | 一种解决业务过程耗时高的方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110794139.8A CN113485809B (zh) | 2021-07-14 | 2021-07-14 | 一种解决业务过程耗时高的方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN113485809A true CN113485809A (zh) | 2021-10-08 |
CN113485809B CN113485809B (zh) | 2022-10-18 |
Family
ID=77938513
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202110794139.8A Active CN113485809B (zh) | 2021-07-14 | 2021-07-14 | 一种解决业务过程耗时高的方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN113485809B (zh) |
Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107608773A (zh) * | 2017-08-24 | 2018-01-19 | 阿里巴巴集团控股有限公司 | 任务并发处理方法、装置及计算设备 |
US20180189096A1 (en) * | 2016-12-30 | 2018-07-05 | Troy Goode | System and method for state machine management |
CN111444430A (zh) * | 2020-03-30 | 2020-07-24 | 腾讯科技(深圳)有限公司 | 内容推荐方法、装置、设备和存储介质 |
CN111488255A (zh) * | 2020-03-27 | 2020-08-04 | 深圳壹账通智能科技有限公司 | 多线程并发监控方法、装置、设备及存储介质 |
CN111708628A (zh) * | 2020-06-23 | 2020-09-25 | 中国平安财产保险股份有限公司 | 任务调度管理方法、装置、设备及存储介质 |
CN112231403A (zh) * | 2020-10-15 | 2021-01-15 | 北京人大金仓信息技术股份有限公司 | 数据同步的一致性校验方法、装置、设备和存储介质 |
CN113051058A (zh) * | 2021-04-06 | 2021-06-29 | 浙江百应科技有限公司 | 一种反欺诈智能决策引擎的调度系统及方法 |
-
2021
- 2021-07-14 CN CN202110794139.8A patent/CN113485809B/zh active Active
Patent Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20180189096A1 (en) * | 2016-12-30 | 2018-07-05 | Troy Goode | System and method for state machine management |
CN107608773A (zh) * | 2017-08-24 | 2018-01-19 | 阿里巴巴集团控股有限公司 | 任务并发处理方法、装置及计算设备 |
CN111488255A (zh) * | 2020-03-27 | 2020-08-04 | 深圳壹账通智能科技有限公司 | 多线程并发监控方法、装置、设备及存储介质 |
CN111444430A (zh) * | 2020-03-30 | 2020-07-24 | 腾讯科技(深圳)有限公司 | 内容推荐方法、装置、设备和存储介质 |
CN111708628A (zh) * | 2020-06-23 | 2020-09-25 | 中国平安财产保险股份有限公司 | 任务调度管理方法、装置、设备及存储介质 |
CN112231403A (zh) * | 2020-10-15 | 2021-01-15 | 北京人大金仓信息技术股份有限公司 | 数据同步的一致性校验方法、装置、设备和存储介质 |
CN113051058A (zh) * | 2021-04-06 | 2021-06-29 | 浙江百应科技有限公司 | 一种反欺诈智能决策引擎的调度系统及方法 |
Also Published As
Publication number | Publication date |
---|---|
CN113485809B (zh) | 2022-10-18 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN108139946B (zh) | 用于在冲突存在时进行有效任务调度的方法 | |
US10248463B2 (en) | Apparatus and method for managing a plurality of threads in an operating system | |
EP2972852B1 (en) | System management interrupt handling for multi-core processors | |
US10628203B1 (en) | Facilitating hibernation mode transitions for virtual machines | |
CN113010275B (zh) | 一种中断处理方法和装置 | |
US9086911B2 (en) | Multiprocessing transaction recovery manager | |
CN103279331A (zh) | Android系统多任务并发处理方法及装置 | |
US20110078702A1 (en) | Multiprocessor system | |
WO2020121840A1 (ja) | 演算制御装置 | |
US11392414B2 (en) | Cooperation-based node management protocol | |
US10114645B2 (en) | Reducing stalling in a simultaneous multithreading processor by inserting thread switches for instructions likely to stall | |
CN113485809B (zh) | 一种解决业务过程耗时高的方法 | |
JP2016207130A (ja) | 情報処理装置、並列処理プログラム、及び、共有メモリアクセス方法 | |
US20080307419A1 (en) | Lazy kernel thread binding | |
CN115934480B (zh) | 一种任务监控方法、系统、装置及计算机可读存储介质 | |
EP2159692A1 (en) | Information processor and load arbitration control method | |
JP6354333B2 (ja) | 情報処理装置及びタイマ設定方法 | |
CN114253720A (zh) | 多线程任务执行方法、装置、电子设备和存储介质 | |
EP4239480B1 (en) | System and method for managing memory errors in integrated circuits | |
CA3154736A1 (en) | Method and apparatus for data truncation | |
JP7338548B2 (ja) | リアルタイム演算処理装置 | |
JP7331768B2 (ja) | リアルタイム演算処理装置 | |
CN110955507B (zh) | 基于vxWorks系统的多任务访问同一IIC总线的方法 | |
CN112988365B (zh) | 一种线程管理方法、装置、设备及介质 | |
WO2021181989A1 (ja) | 演算装置 |
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 |