首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >sleep(),usleep() & [NSThread sleepForTimeInterval:]有什么区别?

sleep(),usleep() & [NSThread sleepForTimeInterval:]有什么区别?
EN

Stack Overflow用户
提问于 2010-07-01 14:42:38
回答 2查看 17.9K关注 0票数 19

谁能给我解释一下NSThread (),usleep()和sleepForTimeInterval之间的区别是什么?

使用这些方法的最佳条件是什么?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2010-07-01 14:53:15

sleep(3)是一个posix标准库方法,它尝试将调用线程挂起一段以秒为单位的时间。usleep(3)也做同样的事情,只不过它需要的时间是微秒。这两种方法实际上都是使用nanosleep(2)系统调用实现的。

最后一个方法做同样的事情,除了它是基础框架的一部分,而不是C库调用。它需要一个表示睡眠时间量的NSTimeInterval,它是一个双精度数,表示秒和秒的分数。

对于所有的意图和目的,它们在功能上都做了相同的事情,即,尝试将调用线程挂起一段指定的时间。

票数 30
EN

Stack Overflow用户

发布于 2011-03-03 00:53:10

在大多数操作系统上,sleep(0)及其变体可用于提高轮询情况下的效率,以便让其他线程有机会工作,直到线程调度器决定唤醒轮询线程。它可以跳过一个完全开启的while循环。不过,我还没有发现非零超时的用处,特别是苹果在构建事件驱动架构方面做得很好,这应该会消除大多数情况下对轮询的需求。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3155586

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档