c - 为什么使用 usleep 而不是 sleep

标签 c multithreading sleep usleep

<分区>

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

我认为 sleepusleep 都使用了 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/

相关文章:

c - 当服务器未启动时,无法与服务器建立重复的 SOCK_STREAM 连接?

c - 使用 fgetc 读取文件意外停止

java - 如何使用CountDownlatch使线程按顺序工作?

java - Tomcat多线程部署使用ManagerServlet

java - 让线程 hibernate 直到设定的日期?

c - sleep() 延迟输出直到结束

c - 如何在汇编中连接两个字符串?

c++ - Qt Creator 找不到标题(说 : "No such file or directory")

c++ - boost 共享指针 : Simultaneous Read Access Across Multiple Threads

点击终端后Python time.sleep中断