谁能给我解释一下NSThread (),usleep()和sleepForTimeInterval之间的区别是什么?
使用这些方法的最佳条件是什么?
发布于 2010-07-01 14:53:15
sleep(3)是一个posix标准库方法,它尝试将调用线程挂起一段以秒为单位的时间。usleep(3)也做同样的事情,只不过它需要的时间是微秒。这两种方法实际上都是使用nanosleep(2)系统调用实现的。
最后一个方法做同样的事情,除了它是基础框架的一部分,而不是C库调用。它需要一个表示睡眠时间量的NSTimeInterval,它是一个双精度数,表示秒和秒的分数。
对于所有的意图和目的,它们在功能上都做了相同的事情,即,尝试将调用线程挂起一段指定的时间。
发布于 2011-03-03 00:53:10
在大多数操作系统上,sleep(0)及其变体可用于提高轮询情况下的效率,以便让其他线程有机会工作,直到线程调度器决定唤醒轮询线程。它可以跳过一个完全开启的while循环。不过,我还没有发现非零超时的用处,特别是苹果在构建事件驱动架构方面做得很好,这应该会消除大多数情况下对轮询的需求。
https://stackoverflow.com/questions/3155586
复制相似问题