如何在Thread.Sleep支持双倍值的情况下获得类似的结果
本文关键字:情况下 结果 Thread Sleep 支持 | 更新日期: 2023-09-27 18:25:09
有时我需要睡眠非整数毫秒,但找不到这样做的方法。例如,如果我想睡半毫秒,我想这样做:
Thread.Sleep(0.5);
但不能,因为Sleep只支持整数。
如果你的时间安排比你在工作中使用完全错误的工具更重要,因为
Thread.Sleep(n)表示至少在n内可能发生的时间片数(或线程数量)毫秒。时间片的长度不同Windows和不同处理器的版本/类型范围从15到30毫秒。这意味着线程几乎保证在不同的计算机。你的线程重新唤醒的可能性在n毫秒之后是不可能的。所以,线程。睡眠对时间来说毫无意义。
你可以在这里读到这一切。
注意:如果你发布了你试图用解决的问题
线程.睡眠
我们可能会引导您朝着正确的方向前进
Thread.Sleep
不支持毫秒的非整数值,因为它没有亚毫秒的分辨率。事实上,分辨率可能会远高于1毫秒(可能是15毫秒,甚至更高,具体取决于硬件)。我怀疑API设计人员在决定数据类型时考虑到了这一点。
顺便说一下,有两种特殊情况。
Thread.Sleep(0)
-这将导致线程向具有相同或更高优先级的另一个线程让步。
Thread.Sleep(1)
-这将导致线程屈服于任何线程,而不管优先级如何。