我尝试使用持续运行的线程在我的应用中以高比率执行任务。 在这个应用程序中,我有一个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%
}
}
答案 0 :(得分:0)
解决方案是找到采样器点火时间之间的最小间隔(基于bpm /分辨率)并使线程睡眠达到该数量。