Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/lua/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios7 NSThread高CPU使用率_Ios7_Core Audio_Nsthread - Fatal编程技术网

Ios7 NSThread高CPU使用率

Ios7 NSThread高CPU使用率,ios7,core-audio,nsthread,Ios7,Core Audio,Nsthread,我正在尝试使用一个持续运行的线程在我的应用程序中以高速率执行任务。 在这个应用程序中,我有一个大约1000个时间戳的列表。我调查他们,直到他们的时间到了,然后指导一个澳大利亚人去比赛 我的问题是,我似乎根本不理解NSThread是如何工作的。在下面这个简单的例子中,尽管没有运行任何任务,cpu仍能100%地启动 我以什么方式错误地使用NSThread? 创建一个不占用cpu的非常快速的轮询机制的更好方法是什么 myThread =[[NSThread alloc]initWithTarget:s

我正在尝试使用一个持续运行的线程在我的应用程序中以高速率执行任务。 在这个应用程序中,我有一个大约1000个时间戳的列表。我调查他们,直到他们的时间到了,然后指导一个澳大利亚人去比赛

我的问题是,我似乎根本不理解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%
}

}

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

while循环阻塞主runloop。。。你应该调查的是这个问题。为了更好地帮助你,需要更多的细节。这真的很奇怪。我在while循环中检查了[NSThread isMainThread],它返回NO。您可以在AUSampler的渲染回调中向其发送事件。这样就不必管理任何线程,您可以获得样本精度。