[erlang-questions] Minimum time for timer:sleep()?

James Hague <>
Sun Mar 18 23:46:13 CET 2007


Here's some simple code to test timer:sleep/1:

test(Milliseconds) ->
   T1 = now(),
   timer:sleep(Milliseconds),
   T2 = now(),
   io:fwrite("elapsed: ~w\n", [timer:now_diff(T2, T1)]).

On the recent model MacBook I tested this on, test(5) prints "elapsed:
10182".  In fact, any value less than 10 milliseconds sleeps for ~10
milliseconds.  Considering that a message send/receive pair is
measured in single-digit MICROseconds on the same machine, this is
curious to me.   Does anyone have any insight into this behavior?

(FWIW, timer:sleep/1 is implemented as a single receive statement.)

James



More information about the erlang-questions mailing list