我正在阅读应用程序代码,有些东西引起了我的注意。代码是:usleep(6*1000*1000)
。我知道他们使用这种格式来解决可读性问题。
我认为sleep
和usleep
都使用 nanosleep
函数,所以我的问题是:为什么不使用做完全相同事情的 sleep(6((即:睡眠 6 秒(?当我们使用usleep
时,我们会获得性能吗?usleep
更"通用"吗?
我认为睡眠和睡眠都使用纳米睡眠功能,
他们可能会这样做,也可能不会。 我不知道C和POSIX标准中有任何理由支持这种假设。
所以我的问题是:为什么不使用做完全相同事情的 sleep(6((即:睡眠 6 秒(?当我们使用睡眠时,我们会提高性能吗?睡得更"通用"吗?
sleep()
函数起源于AT&T Unix版本7。 usleep()
函数起源于 BSD 4.3。 尽管 POSIX 标准化了从两者中提取的混合功能,但曾经有一段时间,您可能只有两者中的一个可用,而哪一个是你特定的 Unix 风格的功能。
如今,usleep()
已经过时,并且已从POSIX中删除。 它仍然得到广泛支持,但nanosleep()
(或sleep()
(应该在新代码中使用。
睡眠的参数是秒,睡眠的参数是微秒。除此之外,我认为它们是相同的。
睡眠($n( == 睡眠($n * 1000000(usleep(25000( 仅休眠 0.025 秒。