gpt4 book ai didi

clock() 和 usleep() 不匹配

转载 作者:太空宇宙 更新时间:2023-11-03 23:22:06 27 4
gpt4 key购买 nike

我正在将数据包从发送方线程发送到接收方线程。为了控制发送速率(每秒数据包数),我计算了在发送下一个数据包之前需要等待的时间,以保持一定的发送速率。

假设需要等待的时间计算为 100 微秒。

  1. 我检查现在几点:(double)(clock() - start)/CLOCKS_PER_SEC;
  2. 我调用 usleep(100);
  3. 我再次检查现在几点:(double)(clock() - start)/CLOCKS_PER_SEC;

在第 3 步中,当我检查时间仅过去了 50 微秒时(我检查了 usleep 的返回值并确认它返回 0)。

这是为什么?它不应该休眠 至少 100 微秒吗?或者是否有我应该与 clock() 一起使用的不同 sleep 功能?感谢您的任何建议

最佳答案

clock函数被定义为为您提供经过的处理时间,而不是挂钟(不幸的是,Windows Visual Studio 运行时库为您提供)。如果你的进程实际上没有运行,因为它正在休眠,那么处理器时间就不会过去

如何获取 walltime 取决于您的平台,但在 POSIX(如 Linux、OSX 或 BSD 变体)上,推荐的方法是 clock_gettime使用 CLOCK_REALTIME 时钟。

关于clock() 和 usleep() 不匹配,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36410002/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com