0
的timer:sleep
實現是:'receive after`和`timer:sleep`之間有什麼區別嗎?
-spec sleep(Time) -> 'ok' when
Time :: timeout().
sleep(T) ->
receive
after T -> ok
end.
所以timer:sleep
等於該代碼:
receive ->
never_match -> %% note: this never to be matched
ok
after 1000
ok
end.
我想知道:
是對
timer:sleep
sleeping
或進程狀態blocking
?對於Erlang VM進程調度,這個實現有什麼區別嗎?
for'timer:sleep',erlang vm會使這個過程成爲'hibernate'? – BlackMamba
正如你可以從[code](https://github.com/erlang/otp/blob/738c34d4bb8f1a3811acd00af8c6c12107f8315b/lib/stdlib/src/timer.erl#L150)看到的那樣,因爲沒有調用['erlang :冬眠/ 3'(http://www.erlang.org/doc/man/erlang.html#hibernate-3)。 – aronisstav