![[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]] 永久任务循环,也是需要这样修正;