<分区>
我正在阅读应用程序代码,有件事引起了我的注意。代码是:usleep(6*1000*1000)
。我知道他们使用这种格式来解决可读性问题。
我认为 sleep
和 usleep
都使用了 nanosleep
函数,所以我的问题是:为什么不使用 sleep(6) 呢?完全一样的东西(即:睡 6 秒)?当我们使用 usleep
时,我们的性能会提高吗? usleep
更“通用”吗?
<分区>
我正在阅读应用程序代码,有件事引起了我的注意。代码是:usleep(6*1000*1000)
。我知道他们使用这种格式来解决可读性问题。
我认为 sleep
和 usleep
都使用了 nanosleep
函数,所以我的问题是:为什么不使用 sleep(6) 呢?完全一样的东西(即:睡 6 秒)?当我们使用 usleep
时,我们的性能会提高吗? usleep
更“通用”吗?
最佳答案
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()
)。
关于c - 为什么使用 usleep 而不是 sleep,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42861913/