111修正延时误差.md 967 B

![[Pasted image 20220803133058.png]]

如果是多任务,就有可能,会产生延迟等问题;回顾一下,之前的计时方式,每次的目标时间,都是基于任务本身的开始时间和延迟,重新计算,这样就可以规避,延时误差的问题了;

而目前的异步调用,是没有目标时间这个概念的,都是基于线程池本身,去自动调度;

![[Pasted image 20220803133422.png]]

为了修正,异步驱动带来不可控的误差,先加一个参数;

![[Pasted image 20220803133602.png]]

在异步任务,初始化的时候,这个延迟修正的数值,为0;

延迟的计算,也加入误差修正的计算;

![[Pasted image 20220803133642.png]]

![[Pasted image 20220803133731.png]]

这是误差的计算,延迟的循环次数,跟延迟本身的数值,相乘,然后减去真实的时间差值;

![[Pasted image 20220803134003.png]]

永久任务循环,也是需要这样修正;