【发布时间】:2018-07-29 18:50:34
【问题描述】:
我在 iex 终端上编写了以下代码,之后它不再响应,终端就停止了,就像它在期待别的东西一样。究竟发生了什么?
receive do
{:hello, msg} -> msg
{:world, msg} -> "won't match"
end
【问题讨论】:
标签: elixir elixir-iex
我在 iex 终端上编写了以下代码,之后它不再响应,终端就停止了,就像它在期待别的东西一样。究竟发生了什么?
receive do
{:hello, msg} -> msg
{:world, msg} -> "won't match"
end
【问题讨论】:
标签: elixir elixir-iex
receive 默认情况下没有超时,因此进程将被阻塞,直到当前进程接收到与任何模式匹配的消息。如果您只是玩玩,可以使用after 设置超时以确保不会发生这种情况:
receive do
{:hello, msg} -> msg
...
after 5000 -> :timeout
end
如果在 5000 毫秒内没有收到与该模式匹配的消息,则表达式现在将返回 :timeout。
【讨论】: