【技术实现步骤摘要】
处理异步任务的方法及装置
[0001]本专利技术涉及任务处理
,尤其涉及处理异步任务的方法及装置。
技术介绍
[0002]对于现有的异步任务线程池来说,其是被动的执行任务。即,任务被投递到线程池后,有空闲的线程才会去执行这个任务。任务的投递和执行利用的是不同的线程。当任务被一个线程投递到线程池之后,线程池中的另一个线程被唤醒,进而通过线程上下文的切换对该任务进行执行。因此,任务在线程池中存在执行效率低的问题。
技术实现思路
[0003]鉴于上述问题,提出了本专利技术以便提供一种克服上述问题或者至少部分地解决上述问题的处理异步任务的方法及装置。
[0004]依据本专利技术的第一个方面,本专利技术提供了一种处理异步任务的方法,所述方法包括:
[0005]当异步任务被投递到线程池后,在所述线程池中创建线程;
[0006]通过线程局部存储变量确定投递所述异步任务的当前线程;
[0007]基于线程身份标识符判断所述当前线程是否属于所述线程池;
[0008]若所述当前线程属于 ...
【技术保护点】
【技术特征摘要】
1.一种处理异步任务的方法,其特征在于,所述方法包括:当异步任务被投递到线程池后,在所述线程池中创建线程;通过线程局部存储变量确定投递所述异步任务的当前线程;基于线程身份标识符判断所述当前线程是否属于所述线程池;若所述当前线程属于所述线程池,则利用所述当前线程执行所述异步任务;若所述当前线程不属于所述线程池,则,从所述线程池中确定出目标线程,并利用所述目标线程执行所述异步任务;其中,所述从所述线程池中确定出目标线程,包括:基于消耗计算量确定所述异步任务的任务类型,以及基于异步任务数变量、切换次数变量和选择执行次数变量确定所述线程池中每个线程的数据值;若所述异步任务的任务类型为计算类型,则将数据值大于或等于预设数据阈值的线程作为所述目标线程;若所述异步任务的任务类型为读写类型,则将数据值小于所述预设数据阈值的线程作为所述目标线程。2.如权利要求1所述的方法,其特征在于,所述在所述线程池中创建线程,包括:在所述线程池中,创建用于表征所述线程池创建时配置的最大线程数量的最大线程数变量,以及创建用于表征所述线程池当前已有线程数量的当前线程数变量;基于所述最大线程数变量和所述当前线程数变量,通过内存顺序放松模式判断所述线程池中当前已有线程数量是否达到所述最大线程数量;若达到所述最大线程数量,则退出;若未达到所述最大线程数量,则对所述内存顺序放松模式添加写锁,并利用添加有写锁的内存顺序放松模式重新判断所述线程池中当前已有线程数量是否达到所述最大线程数量;若达到所述最大线程数量,则退出;若未达到所述最大线程数量,则在所述线程池中创建新的线程。3.如权利要求1所述的方法,其特征在于,所述基于线程身份标识符判断所述当前线程是否属于所述线程池,包括:将所述当前线程和所述线程池中线程的线程身份标识符均转换为数组类型;通过对具有数组类型的所述线程身份标识符进行排序,并利用lambda表达式对排序后的所述线程身份标识符进行两两比较,判断所述当前线程是否属于所述线程池。4.如权利要求1所述的方法,其特征在于,所述方法还包括:在所述线程池中创建用于删除所述线程池中线程的删除函数;当存在删除操作时,基于所述删除函数判断所述线程池中是否存在线程;若所述线程池中存在线程,则基于所述删除函数对指定线程进行删除;若所述线程池中不存在线程,则退出。5.如权利要求1所述的方法,其特征在于,所述方法还包括:在所述线程池中创建用于管理线程句柄的线程句柄管理类;在利用所述线程句柄管理类创建线程和/或删除线程时,对所述线程句柄管理类添加写锁;在利用所述线程句柄管理类激活线程时,对所述线程句柄管理类添加读锁。
6.如权利要求1所述的方法,其特征...
【专利技术属性】
技术研发人员:周志刚,
申请(专利权)人:武汉斗鱼鱼乐网络科技有限公司,
类型:发明
国别省市:
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。