3

当试图将不匹配的消息发送到 erlang shell 中的衍生进程时,我希望消息应该保留在邮箱中,但邮箱似乎是空的,为什么?

Erlang R15B02 (erts-5.9.2) [smp:2:2] [async-threads:0]
Eshell V5.9.2  (abort with ^G) 
1> Pid = spawn(fun()->receive stop->stop end end).
<0.33.0>
2> Pid ! msg.
msg
3> erlang:process_info(Pid, messages).
{messages,[]} %% where is the msg?
4

3 回答 3

4

当消息无法与接收模式匹配时,它会从邮箱移动到保存队列,有关详细信息,请参阅http://ndpar.blogspot.se/2010/11/erlang-explained-selective-receive.html解释发生了什么。

messages参数process_info/2仅显示邮箱内容,AFAIK 无法检查保存队列的内容。

于 2013-06-05T12:59:42.743 回答
0

该消息当然在那里,它将在后续接收中进行检查。erlang:process_info(Pid, messages)在我看来,你看不到它的事实很奇怪

于 2013-06-05T13:28:15.667 回答
0
(ppb2_bs6@esekilvxen245)1> self() ! a.
a
(ppb2_bs6@esekilvxen245)2> erlang:process_info(self(), messages).
{messages,[a]}
于 2013-06-08T06:37:00.460 回答