- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
我有一个简单的调度程序,每 1 秒重复一次任务:
Cancellable task = Akka.system().scheduler().schedule(
Duration.create(0, TimeUnit.MILLISECONDS),
Duration.create(1, TimeUnit.SECONDS),
actor, new TickMsg("Tick", 0, 120)
);
不幸的是,每次传递都延迟了 ticker-duration
,所以最终 actor 恰好在 100 毫秒后收到 TickMsg - 好的,这在文档中有描述,我很清楚:
It does not execute tasks at the exact time, but on every tick, it will run everything that is overdue.
我无法理解的是为什么每 传递都延迟,这实际上意味着每传递 1000 毫秒需要 1100 毫秒。结果,经过 10 次后,我们有 1 秒的延迟,1 分钟后为 6 秒,1 小时后为 6 分钟,依此类推......
一些解决方案是将重复持续时间设置得更短一些,这样它就不会在所需的时间间隔内延迟,例如可以工作,然后调度程序会根据需要重复任务:
Cancellable task = Akka.system().scheduler().schedule(
Duration.create(0, TimeUnit.MILLISECONDS),
Duration.create((1000 - tickerDuration/2), TimeUnit.MILLISECONDS),
actor, new TickMsg("Tick", 0, 120)
);
不幸的是,这种方式有点不舒服而且容易忘记,有没有其他方法可以每 x 秒(或其他 TimeUnit
)重复一次任务而不将其转换为毫秒并缩短?
最佳答案
这在 Akka 2.1 版中已修复。
原因很简单:HashedWheelTimer 不知道重复的任务,所以任务需要重新安排自己,但由于这根据定义发生在滴答之后,它总是会迟到并落入下一个桶。修复是包括漂移校正,参见 here了解详情。
关于java - Akka scheduler() 每次重复都迟到,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14145186/
我正在使用下面的代码来使用 mach_wait_until() 等待指定的时间段(以纳秒为单位)。 private func startTimerAndResume(){ let idealN
在实时系统的背景下,迟到、迟到、松懈和临界之间有什么区别? 最佳答案 这是一个由 3 部分组成的令人困惑的问题。 (你为什么不知道谷歌?) 第 1 部分迟到和迟到:迟到是完成时间减去截止日期;积极的迟
在实时系统的背景下,迟到、迟到、松懈和临界之间有什么区别? 最佳答案 这是一个由 3 部分组成的令人困惑的问题。 (你为什么不知道谷歌?) 第 1 部分迟到和迟到:迟到是完成时间减去截止日期;积极的迟
我正在使用 asp.net mvc razor该页面必须显示一个很长的列表。电话簿员工 - 约 500 人。由于实体太多,页面加载速度太慢。如何通过后台加载前 50 个条目,然后加载其他 450 个条
let currComp = this; let projects = [] let dataArr = [] async function getData() { let getProje
我是一名优秀的程序员,十分优秀!