Erlang并发编程之消息传递
来源:互联网 发布:淘宝魅族售后 编辑:程序博客网 时间:2024/06/01 08:11
下面是erlang教程的一份代码,其中创建了两个进程,其中一个重复向另一个发送消息。
module(tut15).-export([start/0, ping/2, pong/0]).ping(0, Pong_PID) -> Pong_PID ! finished, io:format("ping finished~n", []);ping(N, Pong_PID) -> Pong_PID ! {ping, self()}, receive pong -> io:format("Ping received pong~n", []) end, ping(N - 1, Pong_PID).pong() -> receive finished -> io:format("Pong finished~n", []); {ping, Ping_PID} -> io:format("Pong received ping~n", []), Ping_PID ! pong, pong() end.start() -> Pong_PID = spawn(tut15, pong, []), spawn(tut15, ping, [3, Pong_PID]).
-module(tut4). %模块名字为tut4-export([start/0,ping/2,pong/0]). %导出函数 start函数参数0个 ping函数参数2个 pong函数参数0个ping(0,Pong_PID)-> %如果ping的第一个参数是0,Pong_PID ! finished, %向pid为Pong_PID的进程发送finised消息io:format("ping finished~n",[]);%格式化输出一条信息ping(N,Pong_PID)-> %如果ping的第一个参数不是0Pong_PID ! {ping,self()}, %向pid为Pong_PID的进程发送消息,消息格式为{ping,pid},self()返回当前进程的pidreceive %接受消息pong-> %接受的消息如果是pongio:format("Ping recevived pong~n",[]) %格式化输出一条消息,注意,end之前没有标点符号end,ping(N-1,Pong_PID). %N-1然后继续调用pingpong()->receive %接受消息finished-> %如果接收的消息是finisedio:format("Pong finished~n",[]); %格式化输出一条消息{ping,Ping_PID}-> %如果接收的消息是{ping,pid}这种格式的消息io:format("Pong received ping~n",[]), %格式化输出一条消息Ping_PID ! pong, %向pid为Ping_PID的进程发送一个pong消息pong() %继续调用pong。注意,end前面没有标点符号 也就是说,只有当pong接收到一个{ping,pid}消息时,才向ping发送消息并继续调用自己end.start()->Pong_PID = spawn(tut4,pong,[]), %创建一个进程,并返回pidspawn(tut4,ping,[3,Pong_PID]). %创建另一个进程
阅读全文
0 0
- Erlang并发编程之消息传递
- Erlang并发机制 – 消息传递
- Erlang并发机制 – 消息传递
- Erlang编程入门之并发编程-进程
- 多进程并发编程--消息传递服务器
- Erlang—并发编程
- Erlang并发编程(一)
- erlang并发编程模板
- Erlang并发编程1
- Erlang并发编程2
- erlang 并发编程
- Erlang并发编程
- Erlang并发编程
- 16.5 消息并发传递
- 对话框编程小结之界面消息传递
- Erlang并发编程-目录
- Erlang并发编程-第一章
- Erlang并发编程(三) --- 调试
- Ubuntu12编译FreeRDP
- CreateMutex函数
- python文件夹中__init__.py的用处
- 【OpenSource】【JSON】json 解析框架
- 巴别鸟是如何用2个月时间让上市公司“爱上”它的?
- Erlang并发编程之消息传递
- 内存缓存LruCache实现原理
- android 获取手机分辨率,手机高度宽度
- catic快速入门
- 浅析Java设计模式中的单例模式
- bzoj 2001 [Hnoi2010]City 城市建设
- webpack(一)
- SpringBoot下配置Mybatis多数据源
- tp5 lnmp 404和open_basedir