为什么使用 usleep 而不是 sleep
why use usleep and not sleep
我正在阅读应用程序代码,有件事引起了我的注意。代码是:usleep(6*1000*1000)
。我知道他们使用这种格式来解决可读性问题。
我认为 sleep
和 usleep
都使用 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()
)。
我正在阅读应用程序代码,有件事引起了我的注意。代码是:usleep(6*1000*1000)
。我知道他们使用这种格式来解决可读性问题。
我认为 sleep
和 usleep
都使用 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()
)。