gpt4 book ai didi

scala - 我可以安排一个任务运行少于每 10 毫秒吗

转载 作者:行者123 更新时间:2023-12-01 10:46:03 31 4
gpt4 key购买 nike

我注意到 Akka 中的 scheduler.schedule 不适用于小于 10 毫秒的调度。例如,我在下面尝试过,但我每 10 毫秒才收到一条消息。是否可以减少它,即增加频率?

谢谢设计

akka.actor.ActorSystem("Test").actorOf(Props(new akka.actor.Actor {

val system = context.system
import system.dispatcher

system.scheduler.schedule(0 milliseconds, 2 milliseconds, self, "Test")

def receive = {

case msg =>
println("Received[" + System.currentTimeMillis + "]: " + msg)
}
}), "Test")

最佳答案

调度器没有针对非常精确的调度进行优化,而是针对大量计时器的低开销调度进行了优化(如 - “系统中的每个 Actor 都希望有一个调度事件”)。当您安排某事时,它会与此类时隙的其他任务一起落入“桶”中,并且不会早于给定的超时时间执行。

如您所见,默认的桶分辨率为 10 毫秒。您可以通过 akka.scheduler.tick-duration 调整此设置,但请注意,完全依赖它可能不是最好的主意(系统特定的等待、垃圾收集等)。

您可以在这个 akka 用户线程中阅读更多详细信息:Using Scheduler vs deadline to mimic some backend

关于scala - 我可以安排一个任务运行少于每 10 毫秒吗,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25845950/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com