我可以给 erlang/elixir 接收超时的最小毫秒值是多少?

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)

leg*_*cia 5

最小可能的超时值为0 毫秒。也就是说,您期望消息已经在消息队列中,如果不是,您就不想等待它。

我尝试将超时设置为负值。我预计它会给出编译错误,但事实并非如此。相反,我收到了运行时错误:

** (ErlangError) Erlang error: :timeout_value
Run Code Online (Sandbox Code Playgroud)

这在某种程度上是有道理的,因为超时值不必是常量:您可以使用变量的值作为超时。