erlang笔记2
来源:互联网 发布:电脑管理软件 知乎 编辑:程序博客网 时间:2024/06/05 17:09
1.两进程的消息传递
以下面程序为例:
-module(tut16).-export([start/0, ping/1, pong/0]).
ping(0) -> pong ! finished, %% finished 被发送给了”pong”(导致它像下面所说的那个被终止)
io:format("ping finished~n", []);
ping(N) -> pong ! {ping, self()}, %%表示 self()返回当前自在运行的进程 ID,在这里是”ping”的进程 ID。 receive
pong -> io:format("Ping received pong~n", [])
end, ping(N - 1).
pong() -> receive
finished -> io:format("Pong finished~n", []);{ping, Ping_PID} -> io:format("Pong received ping~n", []), Ping_PID ! pong, pong()end.
start() -> register(pong, spawn(tut16, pong, [])), %% 进程名称注册 spawn(tut16, ping, [3]).2> c(tut16).{ok, tut16}3> tut16:start().<0.38.0>Pong received pingPing received pongPong received pingPing received pongPong received pingPing received pongping finishedPong finished
总结:
1.Erlang内建函数spawn被用于建立一个新的进程:spawn(模块, 导出的函数, 参数列表)
2.发送消息方法:Pid ! Message , 即,Message(任何东西)被发到给了标识为 Pid 的进程。
3.receive构造用于允许进程等待来自其它进程的消息。它的格式是:
receive pattern1 ->
actions1; pattern2 ->
actions2; ....
patternN actionsN
end.
注意,在结尾没有”;”。
阅读全文
0 0
- erlang程序设计 笔记2
- erlang笔记2
- Erlang 笔记
- Erlang笔记
- Erlang笔记(07) - Erlang循环
- Erlang-- 学习笔记2,表达式格式
- erlang学习笔记1
- Erlang 笔记 1
- erlang 语言学习笔记
- erlang学习笔记
- erlang基础笔记
- Erlang自学笔记(一)
- Erlang自学笔记(二)
- Erlang自学笔记(三)
- Erlang学习笔记
- Erlang学习笔记
- erlang配置Lua笔记
- Erlang 基础学习笔记
- hibernate与mybatis异同与比较
- 引入外部java包
- Android 动画
- SVN使用教程之——分支、合并
- http协议入门之缓存
- erlang笔记2
- 做一个gogoboy
- Okhttp的简单使用
- 视觉工程师笔试知识汇总
- DTP Filter
- 微信公众号 accoss_token获取新版
- ZigBee协议栈OSAL解析(第二天)
- 模板引擎-smarty
- java生成图片验证码