7

我正在阅读应用程序代码,有些东西引起了我的注意。代码是:usleep(6*1000*1000)。我知道他们使用这种格式来解决可读性问题。

我认为两者都sleep使用usleepnanosleep功能,所以我的问题是:为什么不使用做完全相同的事情的 sleep(6) (即:睡眠 6 秒)?当我们使用 时,我们是否获得了性能usleep?更usleep“通用”?

4

2 回答 2

11

我认为 sleep 和 usleep 都使用 nanosleep 功能,

他们可能会,也可能不会。对于该假设,我不知道 C 和 POSIX 标准中有任何理由。

所以我的问题是:为什么不使用完全相同的 sleep(6) (即:睡眠 6 秒)?当我们使用 usleep 时,我们会提高性能吗?usleep 更“通用”吗?

sleep()函数起源于 AT&T Unix 版本 7。该usleep()函数起源于 BSD 4.3。尽管 POSIX 标准化了从两者中提取的特性的混合,但曾经有一段时间,您可能只有两者中的一个可供您使用,而其中一个是您特定风格的 Unix 的功能。

如今,usleep()已过时,并已从 POSIX 中删除。它仍然受到广泛支持,但应该在新代码中使用nanosleep()(或)。sleep()

于 2017-03-17T16:26:29.220 回答
2

sleep 的参数是秒,usleep 的参数是微秒。除此之外,我认为它们是相同的。

sleep($n) == usleep($n * 1000000) usleep(25000) 只休眠 0.025 秒。

于 2017-03-17T15:57:13.677 回答