Sleep() 睡眠时间过长

2023-12-23

Windows Server 2016/2019 有问题 在一个典型的循环中,“持续”1000 次重复,其中暂停 1 毫秒。

  for (int i = 0; i <1000; i ++)
  {
      Thread.Sleep (1);
  }

服务器处理每个睡眠周期 - 15 毫秒。自从 1000 个请求以来。 而不是 1000 毫秒。 (1秒)执行15000毫秒。 (15 秒)

在家用电脑上就可以了。只有在服务器上才有这个问题。 我怀疑CPU是罪魁祸首。


一般来说:睡觉只保证睡觉至少在指定时间 -not确切的时间。您将获得下一个处理时间段 - 最简单的解决方案 - 不要旋转并睡眠 - 如果您想要的话,睡眠 1000 毫秒 - 这样您将更接近 1 秒睡眠。通过循环 1000 次,您可以得出“稍大的睡眠”。

参见 f.e.对于 C# 在这里:sleep() https://learn.microsoft.com/en-us/dotnet/api/system.threading.thread.sleep?view=netcore-3.1- 更普遍的是 Windows 睡眠:win32/api/synchapi/nf-synchapi-sleep https://learn.microsoft.com/en-us/windows/win32/api/synchapi/nf-synchapi-sleep.

Source https://learn.microsoft.com/en-us/windows/win32/api/synchapi/nf-synchapi-sleep#remarks:

睡眠间隔过后,线程就可以运行了。如果指定 0 毫秒,线程将放弃其剩余的时间片,但保持就绪状态。请注意,就绪线程不能保证立即运行。因此,线程可能要在睡眠间隔过后一段时间后才能运行。有关详细信息,请参阅调度优先级。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Sleep() 睡眠时间过长 的相关文章

随机推荐