Eri*_*een 1 erlang loops elixir
在 erlang/elixir 中,接收循环采用可选的超时后选项。可以作为参数给出的最小值是多少?
这是我设置为 1 毫秒的代码。
def tick do
receive do
after
001 ->
IO.puts("200ms seconds elapsed")
tick()
end
end
Run Code Online (Sandbox Code Playgroud)
最小可能的超时值为0 毫秒。也就是说,您期望消息已经在消息队列中,如果不是,您就不想等待它。
我尝试将超时设置为负值。我预计它会给出编译错误,但事实并非如此。相反,我收到了运行时错误:
** (ErlangError) Erlang error: :timeout_value
Run Code Online (Sandbox Code Playgroud)
这在某种程度上是有道理的,因为超时值不必是常量:您可以使用变量的值作为超时。