任何人都可以解释一下sleep(),usleep()& [NSThread sleepForTimeInterval:]?
使用这些方法的最佳条件是什么?
答案 0 :(得分:26)
sleep(3)是一个posix标准库方法,它尝试在几秒钟内指定的时间内挂起调用线程。 usleep(3)做同样的事情,除了它需要一个微秒的时间。两者实际上都是通过nanosleep(2)系统调用实现的。
最后一个方法做了同样的事情,除了它是Foundation框架的一部分而不是C库调用。它需要一个NSTimeInterval来表示睡眠的时间量,表示秒和几分之一秒。
对于所有意图和目的,它们在功能上都是相同的,即尝试暂停调用线程一段指定的时间。
答案 1 :(得分:20)
使用的最佳条件是什么 这些方法?
或者,实际上,几乎可以肯定的是,在最独特的情况之外,几乎没有。
你想做什么?
答案 2 :(得分:3)
在大多数操作系统上,sleep(0)及其变体可用于提高轮询情况下的效率,使其他线程有机会工作,直到线程调度程序决定唤醒轮询线程。它击败了一个完整的while循环。虽然我没有太多用于非零超时,特别是苹果公司在构建事件驱动架构方面做得非常好,无论如何都应该在大多数情况下消除轮询的需要。
答案 3 :(得分:-1)