睡眠功能的替代品

Posted

技术标签:

【中文标题】睡眠功能的替代品【英文标题】:alternative for sleep function 【发布时间】:2010-11-30 20:57:47 【问题描述】:

我在我的应用程序中实现了以下功能。

for(i=0;!stopThroughButtons && i<totalMovements;i++)
        [NSThread detachNewThreadSelector:@selector(moveNeedle) toTarget:self withObject:nil];
        sleep(0.3);
    

这里的sleep 是一个带有unsigned int 类型参数的函数。

Sleep 方法使用秒来休眠。

我想以毫秒为单位给出睡眠时间。

有哪些最佳替代方案可用?

【问题讨论】:

sleep() 是错误的答案。见下文。 好的。但现在我已经从我的逻辑中删除了睡眠,我使用了计时器而不是睡眠和线程。好的@bbum。你的评论让我注意到了这一点。 【参考方案1】:

您可能需要nanosleep(),这需要纳秒。但请记住,这些睡眠时间并不准确,因此您真正拥有的是能够比百分之几秒更准确地指定它。

【讨论】:

nanosleep(, ) 先生,请您告诉我,传递什么作为参数?【参考方案2】:

两个选项:@987654321@ 将使用微秒@987654322@ 将使用纳秒

【讨论】:

最后我实现了这个。 & 有用。 for(i=0;!stopThroughButtons && i=9) break; [NSThread detachNewThreadSelector:@selector(moveNeedle) toTarget:self withObject:nil];睡眠(200000); 见下面 cdespinosa 的回答。使用 sleep() 几乎总是错误的答案。 好的。但现在我已经从我的逻辑中删除了睡眠,我使用了计时器而不是睡眠和线程。好的@bbum。你的评论让我注意到了这一点。 请注意,根据平台不同,大于 1,000,000 的 usleep 可能不起作用:***.com/questions/12175106/…【参考方案3】:

还有 NSThread 的 +sleepForTimeInterval:,它以小数秒为单位花费时间。例如:

[NSThread sleepForTimeInterval:0.05];

应该休眠 50 毫秒。

【讨论】:

【参考方案4】:

正如在您启动的另一个线程中所提到的,您可能不想在主线程上休眠,因为这会阻止事件传递并冻结 UI。您可能不想循环和休眠,而是要触发计时器并在计时器触发时执行您的操作。

【讨论】:

好的。但现在我已经从我的逻辑中删除了睡眠,我使用了计时器而不是睡眠和线程。好的@bbum。你的评论让我注意到了这一点。 在 UI 测试中,睡眠方法可能很有用,因为测试应用运行在与测试应用不同的进程上。

以上是关于睡眠功能的替代品的主要内容,如果未能解决你的问题,请参考以下文章

替代 Thread.Sleep

云功能的替代品

寻找云功能替代品——Kafka

CKAN的替代品[关闭]

iPhone 上的 MPMoviePlayerController 替代品?

找XShell替代品,用Tabby