Ios 用于CoreMotion和精确计时的NSThread、NSOperation或GCD?

Ios 用于CoreMotion和精确计时的NSThread、NSOperation或GCD?,ios,multithreading,performance,timing,core-motion,Ios,Multithreading,Performance,Timing,Core Motion,我希望在iPhone 4+上进行一些高精度的核心运动读取(>=100Hz,如果可能)和运动分析,这将在应用程序的主要部分持续运行。运动响应和分析代码发出的信号必须尽可能没有滞后 我最初的计划是基于此处引用的metronome项目中的代码启动一个专用的NSThread,以及一个供运动分析器链接和使用该线程的协议。我想知道GCD或NSD操作队列是否更好 经过大量阅读后,我的印象是,它们被设计用于处理大量离散的一次性操作,而不是定期反复执行的少量操作,并且每毫秒左右使用它们可能会无意中产生大量线程创建

我希望在iPhone 4+上进行一些高精度的核心运动读取(>=100Hz,如果可能)和运动分析,这将在应用程序的主要部分持续运行。运动响应和分析代码发出的信号必须尽可能没有滞后

我最初的计划是基于此处引用的metronome项目中的代码启动一个专用的NSThread,以及一个供运动分析器链接和使用该线程的协议。我想知道GCD或NSD操作队列是否更好

经过大量阅读后,我的印象是,它们被设计用于处理大量离散的一次性操作,而不是定期反复执行的少量操作,并且每毫秒左右使用它们可能会无意中产生大量线程创建/销毁开销。有人在这里有经验吗

我还想知道线程中无休止的while循环(如上面链接中的代码)对性能的影响。有人知道更多关于如何在引擎盖下用线工作吗?我知道iPhone4(及以下)是单核处理器,使用某种智能多任务处理(先发制人?),根据不同的时间和I/O要求切换线程,以产生并行效果

如果你有一个线程,它有一个简单的“循环”循环,但每毫秒只做任何额外的工作,处理器的切换算法是否认为无止境循环是一个“高需求”?这样就占用了其他线程的资源,或者在额外代码执行之间的“停机时间”中将资源更多地分配给其他线程是否足够聪明


提前感谢您的帮助和专业知识…

在我看来,瓶颈在于传感器。实际更新频率通常不等于您指定的频率。看到和


不久前,我用地核运动和原始传感器数据进行了两次测量。我也需要一个高更新率,因为我在做辛普森集成,因此需要最大限度地减少错误。事实证明,实际频率总是较低的,并且在80赫兹左右有限制。这是一款运行iOS4的iPhone4。但是,只要你不需要这个用于科学目的,在大多数情况下,60-70赫兹应该适合你的需要。

谢谢。这些链接有一些有用的信息,比如CoreMotion在一个单独的线程上进行额外的计算以获得姿态坐标。不过,如果有人知道的话,我想知道更多关于这个问题的一般线程方面的信息。。。