7.erlang并发编程

1. Pid = spawn(Fun)
   创建并发进程对Fun求值,新创建的进程和调用者所在进程并发运行。
   可以向新创建的进程Pid发送消息  Pid!M.  或者想多个进程发送消息 Pid1 ! Pid2 !...Pidn ! M .  !号为发送消息运算符
   注意:消息的发送是异步的,直接返回消息本身。
  
   接受发送给当前进程的消息语法:
   receive
       Pattern1 [when Guard1] ->
            Expressions1;
       Pattern2 [when Guard2] ->
            Expressions2;
   end
   注意: 未处理的消息交给后续过程来处理,就像人对一些外界的信息可以分时段或不处理一样。进程就像一个人。
2.进程简单例子:
  由计算面积函数改造而来  area_server0.erl
  -module(area_server0). 
  -export([loop/0]).
  loop() ->
    receive
 {rectangle, Width, Ht} ->
     io:format("Area of rectangle is ~p~n",[Width * Ht]),
     loop();
 {circle, R} ->
     io:format("Area of circle is ~p~n", [3.14159 * R * R]),
     loop();
 Other ->
     io:format("I don't know what the area of a ~p is ~n",[Other]),
     loop()
    end.
 shell进程语法测试:
     2> c(area_server0).
{ok,area_server0}
3> Pid = spawn(area_server0:loop/0).
* 1: illegal expression
4> Pid = spawn(fun area_server0:loop/0).  --创建进程格式
<0.38.0>
5> Pid ! {rectangle,6,10}.   ---消息格式
Area of rectangle is 60
{rectangle,6,10}
6> Pid ! {circle,23}.
Area of circle is 1661.90111
{circle,23}
7> Pid ! {test,20}.
I don't know what the area of a {test,20} is
{test,20}

你可能感兴趣的:(erlang,并发编程)