【发布时间】:2012-01-24 14:44:01
【问题描述】:
我希望在 iPhone 4+ 上进行一些高精度的核心运动读数(如果可能,则 >=100Hz)和运动分析,这将在应用程序的主要部分持续运行。运动响应和分析代码发出的信号必须尽可能没有延迟。
我最初的计划是根据此处引用的节拍器项目中的代码启动一个专用的 NSThread:Accurate timing in iOS,以及用于链接和使用该线程的运动分析器的协议。我想知道 GCD 或 NSOperation 队列是否会更好?
大量阅读后我的印象是,它们旨在处理大量离散的一次性操作,而不是定期重复执行的少量操作,并且每毫秒左右使用它们可能会无意中创建大量线程创建/销毁开销。有人在这里有经验吗?
我还想知道线程中无限 while 循环对性能的影响(例如上面链接中的代码)。有谁知道更多关于线程如何在引擎盖下工作的信息?我知道 iPhone4(及以下)是单核处理器并使用某种智能多任务处理(抢先式?),它根据各种时序和 I/O 需求切换线程以创建并行效果......
如果你的线程有一个简单的“while”循环无限运行,但每毫秒左右只做任何额外的工作,处理器的切换算法是否认为无限循环是对资源的“高需求”,从而占用其他资源线程还是足够聪明地在额外代码执行之间的“停机时间”中将资源更多地分配给其他线程?
提前感谢您的帮助和专业知识...
【问题讨论】:
标签: ios multithreading performance timing core-motion