rip*_*234 6 time multithreading sleep
在这篇关于虚假程序的有趣文章中,程序员相信时间,其中之一就是
Thread.sleep(1000)休眠> = 1000毫秒.
什么时候不是这样?
根据这个(Windows操作系统的睡眠实现,这就是Thread.sleep将在下面调用的内容):如果dwMilliseconds小于系统时钟的分辨率,则线程可能会睡眠少于指定的时间长度。如果 dwMilliseconds 大于 1 个刻度但小于 2 个刻度,则等待时间可以是 1 到 2 个刻度之间的任意值,依此类推。要提高睡眠间隔的准确性,请调用timeGetDevCaps函数来确定支持的最小计时器分辨率,并调用timeBeginPeriod函数将计时器分辨率设置为其最小值。
操作系统仅对中断做出反应,因此在中断时处理睡眠到期。可以通过以下方式增加中断频率,这是正确的timeBeginPeriod。难点在于,该Sleep()功能的到期需要满足两个条件:
条件2就是这里的问题。dwMilliseconds将与中断时过期的系统时间进行比较。系统时间将导致Sleep()函数以文件时间格式增量过期,换句话说,当系统时间增量大于dwMilliseconds的 n 倍时。因此,人们可能永远无法获得 1 毫秒的睡眠延迟。这在很大程度上取决于系统的硬件、软件和配置(系统时间增量/粒度)。
可以在这里找到一些示例来仔细查看
回答这个问题: Thread.sleep(1000) 休眠 >= 1000 毫秒始终是 TRUE!编辑:在 Thread.sleep(1) 之后立即执行时
编辑:但是 Thread.sleep(1) 休眠 >= 1 毫秒可能并不总是 TRUE
| 归档时间: |
|
| 查看次数: |
12546 次 |
| 最近记录: |