[Erlang开发之路]回顾总结三、Erlang中的消息

2019-07-26  本文已影响0人  循环不计次

Erlang的消息介绍

Erlang是基于多进程的高并发编程语言,而进程之间通信只能通过消息传递,在Erlang中,我理解的范围内Erlang的消息传递有两种:一种是通过send也就是!操作符去发送消息,一种是通过套接字去收发消息,在这里我主要还是来讲讲receive 通用的收消息命令

Receive的介绍


我们来看一个给消息接收设置优先级的例子:(来自《learn you some erlang for great good》)

-module(multiproc).
important() ->
receive
{Priority, Message} when Priority > 10 ->
[Message | important()]
after 0 ->
normal()
end.
 
normal() ->
receive
{_, Message} ->
[Message | normal()]
after 0 ->
[]
end.

清空当前邮箱一条消息的例子:
原理其实就是无条件的匹配消息,然后邮箱就会空了
如果要全部清空,只要在尾部价格flush()尾递归就行了
如果要清空指定消息,只要在函数中精确匹配他就好了

flush()->
  receive
      Any->
          io:format("flush:~p~n",[Any])
  end.

上一篇 下一篇

猜你喜欢

热点阅读