2011-01-12 53 views
1

我正在使用Grand Central Dispatch将一个块添加到队列(而不是主队列)。该块有一个循环,并且在循环的每个通道之间需要0.02秒的小延迟。我正在使用iphone - 可以在Grand Central Dispatch的辅助线程上使用usleep吗?

dispatch_async(myOwnQueue, ^{ 
    // begin loop 
    // do stuff 
    usleep(20000); 
    // end loop 
}); 

在此队列上。因为它不是主队列,所以不会阻塞主线程。

的问题是,Xcode中抱怨:警告:函数“usleep”隐式声明

有没有其他办法可以做到这一点?

谢谢。

+0

不会dispatch_after是一个更好的解决方案吗? – NSIntegerMax 2013-01-02 22:03:55

+0

是的,忙等待不是答案。使用dispatch_after或NSTimer或dispatch_source计时器,但不要忙于在GCD线程上等待。当您提交给它的工作项目没有被阻止时,GCD效果最佳。 – ipmcc 2013-08-19 13:45:46

回答

3

你只需要调用包括usleep()函式之前适当的头:

#include <unistd.h> 
相关问题