This application provides a task asynchronous execution method and device and system thereof, wherein the method comprises the following steps: in the current thread by thread pool thread pool API plans to submit the case for the current task, the current task to establish the current coroutine corresponding in the current thread; wherein, the current task for the the current thread to determine the blocking task may be in the implementation process; using the current coroutine processing the current task. This application is determined in the current thread application execution of the current task may be blocked, no longer will be sent to the current task thread pool task queue, that is no longer by the thread pool scheduling task; new coroutine but in the current thread, by the association to deal with the current task. Therefore, this application can solve the problem of increasing the CPU consumption and affecting the performance of the processor caused by the thread pool to handle the possible blocking tasks.
【技术实现步骤摘要】
一种任务异步执行方法、装置及系统
本申请涉及计算机
,尤其涉及一种任务异步执行方法、装置及系统。
技术介绍
目前,处理器上可以运行多个应用程序,客户端可以向处理器中应用程序发送任务。为了提高应用程序中任务的处理速率,目前处理器可以构建线程池。线程池为处理器的操作系统中预先建立的多个线程的集合;其中,线程为操作系统能够进行运算调度的最小单位,通俗来讲线程可以看成任务的执行单元。为了处理应用程序中的任务,处理器可以为每个应用程序分配一个线程,由线程来处理应用程序中的任务。由于处理器可以并发处理多个线程,所以处理器可以并发处理多个应用程序中的任务,从而提高应用程序中任务的处理效率。线程在运行过程中具有三种状态:运行状态、就绪状态和阻塞状态。其中,当线程执行任务的数据没有到位时,则线程为阻塞状态;当线程执行任务的所需数据到位,但是处理器无法向该线程提供CPU资源时,则线程为就绪状态;当线程既有执行任务的所需数据又有处理器提供的CPU资源时,则线程为运行状态。在线程处理任务的过程中难免会遇到阻塞状态,此时线程无法继续执行任务,这会导致线程无法执行应用程序中其它任务。为 ...
【技术保护点】
一种任务异步执行方法,其特征在于,所述方法包括:在当前线程通过线程池API计划向线程池提交当前任务的情况下,在所述当前线程下为所述当前任务建立对应的当前协程;其中,所述当前任务为所述当前线程确定在执行过程中可能出现阻塞的任务;利用所述当前协程处理所述当前任务。
【技术特征摘要】
1.一种任务异步执行方法,其特征在于,所述方法包括:在当前线程通过线程池API计划向线程池提交当前任务的情况下,在所述当前线程下为所述当前任务建立对应的当前协程;其中,所述当前任务为所述当前线程确定在执行过程中可能出现阻塞的任务;利用所述当前协程处理所述当前任务。2.如权利要求1所述的方法,其特征在于,所述利用所述当前协程处理所述当前任务,包括:在所述当前协程处理所述当前任务的过程中,若所述当前协程未出现阻塞状态,则在所述当前任务结束之后,销毁所述当前协程。3.如权利要求1所述的方法,其特征在于,所述利用所述当前协程处理所述当前任务,包括:在所述当前协程处理所述当前任务的过程中,若所述当前协程出现阻塞状态,则挂起所述当前协程;切换至所述当前线程下的一个未阻塞协程;控制所述当前线程的CPU资源,执行所述未阻塞协程。4.如权利要求3所述的方法,其特征在于,所述切换至所述当前线程下的一个未阻塞协程,包括:判断所述当前协程的父协程、唤醒协程队列或IO协程队列中是否具有非阻塞协程;若有,切换至所述当前协程的父协程、所述唤醒协程队列或所述IO协程队列中一个非阻塞协程;若无,则判断超时协程队列中是否具有非阻塞协程;若所述超时协程队列中具有非阻塞协程,则切换至所述超时协程队列中一个非阻塞协程;若所述超时协程队列中不具有非阻塞协程,则在时间间隔内判断是否监听到IO事件或唤醒事件;若在所述时间间隔内监听到IO事件或唤醒事件,则进入判断所述当前协程的父协程、唤醒协程队列或IO协程队列中是否具有非阻塞协程的步骤;若在所述时间间隔内未监听到IO事件或唤醒事件,则进入判断超时协程队列中是否具有非阻塞协程的步骤。5.如权利要求4所述的方法,其特征在于,所述时间间隔为超时协程队列中最小的剩余时间;其中,所述剩余时间为预设超时时间与存在于所述超时协程队列的时间的差值。6.如权利要求3所述的方法,其特征在于,在所述当前协程出现阻塞状态之后,还包括:在所述当前协程的阻塞状态置有超时时间的情况下,将所述当前协程的标识信息和当前时间加入至超时协程队列;在所述当前协程的阻塞状态由IO阻塞引起的情况下,将引起所述当前协程出现IO阻塞的IO事件和当前协程的标识信息,一并注册至IO事件监听器。7.如权利要求1所述的方法,其特征在于,所述利用所述当前协程处理所述当前任务,包括:在所述当前协程处理所述当前任务的过程中,若接收到新任务,则依据所述新任务,并以所述当前协程为父协程新建子协程;利用所述子协程处理所述新任务。8.一种任务异步执行装置,其特征在于,所述装置包括:建立单元,用于在当前线程通过线程池API计划向线程池提交当前任务的情况下,在所述当前线程下为所述当前任务建立对应的当前协程;其中,所述当前任务为所述当前线程确定在执行过程中可能出现阻塞的任务...
【专利技术属性】
技术研发人员:郁磊,张同宝,赵海平,
申请(专利权)人:阿里巴巴集团控股有限公司,
类型:发明
国别省市:开曼群岛,KY
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。