2个定时器之间的差异
Posted
技术标签:
【中文标题】2个定时器之间的差异【英文标题】:Discrepancy between 2 timers 【发布时间】:2013-08-30 01:36:03 【问题描述】:我的游戏中需要两个计时器,一个以秒为单位计数,另一个以毫秒为单位。我有 2 个标签、函数和变量。第一个函数的间隔为 1.0,另一个函数的间隔为 0.001。但是 0.001 计时器总是比 1.0 慢(例如 700ms 和 1s)。我该如何解决?
【问题讨论】:
期望任何东西在非硬实时操作系统上以 1KHz 可靠地执行会招致失望。 然而,1 秒内 700 毫秒。即使@1KHz 也超出了容忍范围......除非,user2719716,您在几分钟内累积了这些总数,并且只向我们展示了平均不良结果。如果是这样,那么 ipmcc 已经解决了您的问题。 【参考方案1】:您永远不应假设在 N 毫秒触发的计时器将在该时间间隔被调用。
计时器被设计为在等待至少 N 毫秒后触发,并且由于线程优先级,它几乎肯定会在更长的等待后触发。
此外,如果您在计时器触发器中处理的时间超过一毫秒,您将基本上“跳过”一些触发器并获得您描述的较低值。
要获取经过的时间,请使用日期差异,而不是计时器。
Getting the time elapsed (Objective-c)
【讨论】:
好吧,假设我需要秒表而不是计时器。我需要他在一秒钟后显示 1000 毫秒。那我该怎么办? 当您启动“秒表”时保存日期时间,然后在每次调用计时器时,通过将保存的时间与“现在”进行比较来检查经过了多少毫秒。显示此值,一旦 > 1000 就停止或执行任何操作。【参考方案2】:hmmm ...为什么不只使用一个计时器并标记 1k ms。一秒钟。 ?设置标志,调用函数。等等。我想不出一个需要多个计时器的充分理由(除了为硬件提供服务的微控制器,但显然这不是你在做的事情)。
【讨论】:
这不是问题。问题是,当 1k ms 过去时,实际上过去了超过 1 秒。 在两个计时器上 ???您使用的是哪个版本的 ios 和什么设备?也许你最好发布你的代码——这个需要被复制。 (很难相信你所说的正在发生!但我确实给你怀疑的好处。我们总是可以在代码方面提供更多帮助。【参考方案3】:你为什么要计算秒数?你不应该根据时钟开始和当前时钟之间的差异来计算时间吗?这将使计时器匹配,因为它们来自相同的参考。听起来您实际上是在根据计时器任务进行计数。这将使累积时间取决于线程执行等。
【讨论】:
以上是关于2个定时器之间的差异的主要内容,如果未能解决你的问题,请参考以下文章