The invention provides a method, device and computer device for thread sleep, which includes: storing the microsecond time of each thread's history sleep time acquired into a pre-established array; acquiring the ID of the current thread; searching for the existence of a time item corresponding to ID in the array based on ID; acquiring the history sleep time corresponding to ID if there is a time item; and acquiring the history sleep time corresponding to ID if there is a time item. The first microsecond time, the second microsecond time and the first microsecond time of the preset current thread's sleeping time are used to determine the total microsecond time of the current thread's sleeping time, and the total microsecond time relative to the millisecond time M per millisecond is determined to determine whether the millisecond time M is positive or not. If the millisecond time M is positive, the sleep function is called to make the current thread sleep M milliseconds. The sleep function invoked can be precise to microseconds when executing sleep time, which ensures that threads can wake up precisely after sleep, and improves the execution efficiency of threads.
【技术实现步骤摘要】
一种线程睡眠的方法、装置及计算机设备
本专利技术属于通信
,尤其涉及一种线程睡眠的方法、装置及计算机设备。
技术介绍
在Windows系统上进行开发时,为了降低中央处理器(CPU,CentralProcessingUnit)的消耗,通常会调用系统提供的应用程序函数(API,ApplicationProgrammingInterface)Sleep,使程序睡眠一定时间。但是该函数的精度不够,在某些情况下当调用该函数使程序睡眠一毫秒时候,不会如期醒来,又影响到线程的执行逻辑,进而影响到线程的运行效率。基于此,本专利技术提供一种线程睡眠的方法、装置及计算机设备,以解决现有技术中的上述问题。
技术实现思路
针对现有技术存在的问题,本专利技术实施例提供了一种线程睡眠的方法、装置及计算机设备,用于解决现有技术中在通过调用系统提供的睡眠函数使得线程睡眠一定时长,以用来降低CPU功耗时,由于睡眠函数的精度不高,线程不能精准苏醒,导致线程的执行效率下降的技术问题。本专利技术提供一种线程睡眠的方法,所述方法包括:将获取到的各线程历史睡眠时长的微秒时间存储至数组的各时间项中,所述数组 ...
【技术保护点】
1.一种线程睡眠的方法,其特征在于,所述方法包括:将获取到的各线程历史睡眠时长的微秒时间存储至数组的各时间项中,所述数组是预先建立的;获取当前线程的标识ID;基于所述ID,在所述数组中查找是否存在与所述ID对应的时间项;若存在所述时间项,获取与所述ID对应的历史睡眠时长的第一微秒时间;利用预设的当前次所述当前线程需睡眠时长的第二微秒时间及所述第一微秒时间确定所述当前线程需睡眠的总微秒时间;确定所述总微秒时间相对于单位毫秒的毫秒时间M,判断所述毫秒时间M否为正数,若所述毫秒时间M为正数,则调用睡眠函数使得所述当前线程睡眠M毫秒。
【技术特征摘要】
1.一种线程睡眠的方法,其特征在于,所述方法包括:将获取到的各线程历史睡眠时长的微秒时间存储至数组的各时间项中,所述数组是预先建立的;获取当前线程的标识ID;基于所述ID,在所述数组中查找是否存在与所述ID对应的时间项;若存在所述时间项,获取与所述ID对应的历史睡眠时长的第一微秒时间;利用预设的当前次所述当前线程需睡眠时长的第二微秒时间及所述第一微秒时间确定所述当前线程需睡眠的总微秒时间;确定所述总微秒时间相对于单位毫秒的毫秒时间M,判断所述毫秒时间M否为正数,若所述毫秒时间M为正数,则调用睡眠函数使得所述当前线程睡眠M毫秒。2.如权利要求1所述的方法,其特征在于,若所述数组中不存在所述时间项,还包括:在所述数组中添加所述当前ID对应的时间项,并将添加的所述时间项的微秒时间设置为预设的数值。3.如权利要求1所述的方法,其特征在于,所述利用预设的当前次所述当前线程需要睡眠时长的第二微秒时间及所述第一微秒时间确定所述当前线程需睡眠的总微秒时间,包括:利用公式T1=(timeArray[id]+T)*delta确定所述当前线程需睡眠的总微秒时间T1,其中,所述timeArray[id]为所述第一微秒时间,所述T为所述第二微秒时间;所述delta为线程响应误差。4.如权利要求3所述的方法,其特征在于,所述线程响应误差delta根据公式delta=T2/(Tend–Tstart)确定;其中,所述T2为当前线程实际睡眠的第三微秒时间,所述Tstart为开始执行睡眠函数的时间点,所述Tend为所述睡眠函数执行结束的时间点。5.如权利要求3所述的方法,其特征在于,当所述delta大于1时,所述当前线程需睡眠的总微秒时间利用公式T3=timeArray[id]+T+(timeArray[id]+T)*(delta–1)确定;其中,所述(timeArray[id]+T)*(delta–1)为时间差补偿值。6.如权利要求3所述的方法,其特征在于,当所述delta小于1时,所述当前线程需睡眠的总微秒时间利用公式T4=timeArray[id]+T-(timeArra...
【专利技术属性】
技术研发人员:杨亮,张文明,陈少杰,
申请(专利权)人:武汉斗鱼网络科技有限公司,
类型:发明
国别省市:湖北,42
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。