主要就是讲了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.
在处理消息的时候,会依次将邮箱里的消息拿出来进行匹配,匹配到了就进行处理后接着往下匹配直到没有消息匹配。没有匹配到的消息不会丢弃,会放回邮箱顶部,等待下一次的匹配。所以邮箱的无用消息过多会影响性能。
本文深入探讨Erlang中的消息传输机制,包括延时等待、消息队列清理及按优先级处理队列的方法。详细解析了消息处理流程,如何通过匹配机制处理邮箱中的消息,未匹配的消息会被保留,直至下次处理。

被折叠的 条评论
为什么被折叠?



