主要就是讲了erlang消息传输的一些知识
没有接收消息的部分,用于延时等待
sleep(T) ->
receive
after T -> ok
end.
用于清理消息队列
flush() ->
receive
_ -> flush()
after 0 ->
ok
end.
比较有意思的按照优先级处理队列
important() ->
receive
{Priority, Message} when Priority > 10 ->
[Message | important()]
after 0 ->
normal()
end.
normal() ->
receive
{_ , Message} ->
[Message | normal()]
after 0 ->
[]
end.
在处理消息的时候,会依次将邮箱里的消息拿出来进行匹配,匹配到了就进行处理后接着往下匹配直到没有消息匹配。没有匹配到的消息不会丢弃,会放回邮箱顶部,等待下一次的匹配。所以邮箱的无用消息过多会影响性能。