Erlang笔记(12) - 并发编程 - ToBeContinue

来源:互联网 发布:java byte 高位 低位 编辑:程序博客网 时间:2024/06/09 17:03

1. 进程创建,发送

  • 创建
    • Pid = spawn(Module, Function, Arguments).
      • Module:模块名
      • Function:对应的函数
      • Arguments:函数的参数;Arguments 为一个列表,比如:spawn(m, f, [a])
      • Pid:返回的 process identity
  • 发送消息
    • Pid ! hello
      • 向标识符为 Pid 的进程发送 hello 消息。Pid1!Pid2!Pid3...!Message,将消息发送到几个进程中
    • pid(0,30,0) ! hello
    • 消息会被发送到进程的消息队列
  • 接收消息
    • 语法:
      • receive
      •   Pattern1 when Guard1 -> exp11, .., exp1n;
      •   Pattern2 when Guard2 -> exp21, .., exp2n;
      •   ...
      •   Other -> expn1, .., expnn
      • after
      •   Timeout -> exp1, .., expn  % 设置没有匹配成功的等待时间戳;如果超过这个时间没有后续的消息,则执行 after 后面的
      • end
    • 当一个消息到达进程是,系统依次尝试与 Pattern1, Pattern2, ... 匹配。如果依次都没有匹配,那么消息就会留给后续过程来处理,然后进程等待下一条消息。


2. 并发相关的函数

  • processes().:显示当前系统运行进程号
  • i().:查看当前运行进程信息
  • self().:查看当前进程号
  • flush().:清空消息队列
  • register(ProcessName, spawn(...)).:给进程一个别名
  • unregister(Name):删除原子式Name与对应进程的关联。
  • whereis(ProcessName).:查看对应进程名的进程号
  • registered():返回一个包含所有当前已注册过的名字
  • regs().:以注册和未注册的形式显示进程信息。
0 0
原创粉丝点击