【问题标题】:NSThread High CPU usageNSThread 高 CPU 使用率
【发布时间】:2014-03-06 09:36:37
【问题描述】:

我正在尝试使用持续运行的线程在我的应用程序中高速执行任务。 在这个应用程序中,我有一个包含 1000 个左右时间戳的列表。我轮询他们,直到他们的时间到了,然后指示一个 ausampler 玩。

我的问题是我似乎根本不了解 NSThread 是如何工作的。在下面的简单示例中,尽管没有运行任何任务,但 cpu 仍会达到 100%。

我以什么方式错误地使用了 NSThread? 有什么更好的方法来创建一个不占用 CPU 的非常快速的轮询机制?

myThread =[[NSThread alloc]initWithTarget:self selector:@selector(test) object:Nil];
            [audioThread setThreadPriority:0];
            [audioThread start];


-(void)test

{
    while(mycondition)

{

   // do my work
  // cpu == 100%
}

}

【问题讨论】:

  • while 循环阻塞了主运行循环...您应该查看的是concurrent programming guide of Apple。为了更好地帮助您,需要更多详细信息。
  • 这真的很奇怪。我在 while 循环中检查了 [NSThread isMainThread],它返回 NO。
  • 您可以在 AUSampler 的渲染回调中发送事件。这样就不必管理任何线程,并且您可以获得样本准确性。

标签: ios7 core-audio nsthread


【解决方案1】:

解决方案是找到采样器触发时间之间的最小间隔(基于 bpm/分辨率)并使线程休眠该数量。

【讨论】:

    猜你喜欢
    • 2021-12-09
    • 2014-07-16
    • 2014-08-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多