Thread.sleep (DMD 2.020)

Sean Kelly sean at invisibleduck.org
Sat Nov 1 09:30:36 PDT 2008


Sean Kelly wrote:
> John C wrote:
>> I think Thread.sleep, which was introduced in core.thread in 2.020, is 
>> broken on Win32. No matter what value I pass to the function, it 
>> merely sleeps for 1 millisecond. Looks like the problem is here:
>>
>>   period = period < TICKS_PER_MILLI ?     1 : // 
>> <------------------------------------------------- BUG?
>>     period / TICKS_PER_MILLI;
>>
>> Should it be testing if period is greater than MAX_SLEEP_MILLS, rather 
>> than less than TICKS_PER_MILLI?
> 
> This test was meant to make the min sleep time 1 millisecond, but I 
> think I'm going to remove it.

Oh, I should mention that Thread.sleep() actually works correctly, even 
with this check in place.  The sleep parameter uses a 100ns resolution, 
so to sleep for one millisecond you must use 10_000, while to sleep for 
one second it's 10_000_000.  This isn't the same as Windows, which uses 
a millisecond resolution.  I've tested this routine on Windows, however, 
and have verified that it works correctly.  The docs are wrong however, 
as they say 500 = one millisecond.  I'll fix that.


Sean



More information about the Digitalmars-d mailing list