为什么使用 usleep 而不是 sleep

why use usleep and not sleep

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

我认为 sleepusleep 都使用 nanosleep 函数,所以我的问题是:为什么不使用 sleep(6) 来做同样的事情(即:睡 6 秒)?当我们使用 usleep 时,我们的性能会提高吗? usleep 更 "generic" 吗?

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

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

I think that both sleep and usleep use the nanosleep function,

他们可能会,也可能不会。我不知道 C 和 POSIX 标准是否有任何理由支持该假设。

so my question is: why not using sleep(6) that does exactly the same thing (ie: sleeps for 6 sec) ? Do we gain in performance when we use usleep ? is usleep more "generic" ?

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

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