我正在阅读一份应用程序的代码,其中引起了我的注意。代码是:
我认为
usleep(6*1000*1000)
。我理解他们之所以使用这种格式是为了可读性。我认为
sleep
和usleep
都使用nanosleep
函数,所以我的问题是:为什么不使用能够完全相同(即睡眠6秒)的sleep(6)
呢?当我们使用usleep
时,我们是否可以获得更好的性能?usleep
是否更加"通用"?
sleep
的 man 手册提到它可能使用SIGALRM
实现,因此您可能无法将对sleep()
的调用与alarm()
混合使用。 - Chris Turnerusleep
实现?POSIX 仅保证其对小于一百万的值有效。 - Sander De Dyckersleep
是通过alarm
实现的,因此会干扰对SIGALRM
和alarm
的其他使用。也许作者想要避免这种情况。POSIX 仍然(作为一个错误)允许这样的实现,但它与支持多线程的实现不兼容,而 POSIX 也要求支持多线程,因此应将其视为历史上不再相关的无意义内容。 - R.. GitHub STOP HELPING ICE