CN113485809A - 一种解决业务过程耗时高的方法 - Google Patents

一种解决业务过程耗时高的方法 Download PDF

Info

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
Application number
CN202110794139.8A
Other languages
English (en)
Other versions
CN113485809B (zh
Inventor
米大洋
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Shanghai Tonglian Financial Services Co Ltd
Original Assignee
Shanghai Tonglian Financial Services Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Shanghai Tonglian Financial Services Co Ltd filed Critical Shanghai Tonglian Financial Services Co Ltd
Priority to CN202110794139.8A priority Critical patent/CN113485809B/zh
Publication of CN113485809A publication Critical patent/CN113485809A/zh
Application granted granted Critical
Publication of CN113485809B publication Critical patent/CN113485809B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/46Multiprogramming arrangements
    • G06F9/48Program initiating; Program switching, e.g. by interrupt
    • G06F9/4806Task transfer initiation or dispatching
    • G06F9/4843Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
    • G06F9/4881Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5027Allocation 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/5038Allocation 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中,自旋操作的方式如下:
持续更新,直到更新成功或当前线程任务被其他线程更新后退出持续更新的动作,以达到执行所述线程任务的业务代码的目的。
CN202110794139.8A 2021-07-14 2021-07-14 一种解决业务过程耗时高的方法 Active CN113485809B (zh)

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)

* Cited by examiner, † Cited by third party
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 浙江百应科技有限公司 一种反欺诈智能决策引擎的调度系统及方法

Patent Citations (7)

* Cited by examiner, † Cited by third party
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