Erlang中的空进程邮箱

Erlang中的空进程邮箱,erlang,message-passing,Erlang,Message Passing,当您向shell进程发送消息时,可以通过调用来清除所有消息: C:\Windows\System32>erl Eshell V5.9(使用^G中止) 1> self()!乔希。 乔希 2> self()!我 我 3> self()!你。 你 4> 刷新()。 壳牌抓住了乔希 壳牌抓住我了 壳牌抓住你了 好啊 5> 在我看来,这会清空shell进程的邮箱。 清空任何erlang进程邮箱的等效方法是什么?此函数应刷新邮箱中的所有邮件(在您调用它的任何进程中): 谢谢@stemm。我想知道:在0之后

当您向shell进程发送消息时,可以通过调用来清除所有消息:
C:\Windows\System32>erl Eshell V5.9(使用^G中止) 1> self()!乔希。 乔希 2> self()!我 我 3> self()!你。 你 4> 刷新()。 壳牌抓住了乔希 壳牌抓住我了 壳牌抓住你了 好啊 5>

在我看来,这会清空shell进程的邮箱。
清空任何erlang进程邮箱的等效方法是什么?

此函数应刷新邮箱中的所有邮件(在您调用它的任何进程中):


谢谢@stemm。我想知道:
在0之后->确定
是否会立即强制进程退出
接收
?请问您对此有何参考?据我所知(并在实践中检查),此功能将接收所有现有邮件,而邮箱不是空的。我在Francesco Cesarini的书Erlang Programming(第4段-关于并行编程)中读过这篇技巧。是的,0之后的
保证在“超时”之前尝试匹配邮箱中的所有消息。它比在1->之后执行
更有效,因为实际上不会启动计时器;这是不必要的。
C:\Windows\System32>erl
Eshell V5.9  (abort with ^G)
1> self() ! josh.
josh
2> self() ! me.
me
3> self() ! you.
you
4> flush().
Shell got josh
Shell got me
Shell got you
ok
5>
flush() ->
        receive
                _ -> flush()
        after
                0 -> ok
        end.