Erlang-实现进程环
来源:互联网 发布:熟练掌握编程 英文 编辑:程序博客网 时间:2024/04/30 08:32
M是消息传递数目,N进程数量,Msg是传递的消息
-module(exe3_2).-export([start/3,stop/0]).start(M,N,Msg) ->register(ring,spawn(fun()->ring_service(M,N,Msg) end)).stop() -> ring!stop.ring_service(M,N,Msg) -> Ring=ring_node(N,[]),%Ring是进程环 send_msg(M,Msg,Ring), receive stop -> stop_ring(Ring) end.stop_ring([]) ->ok;stop_ring([H|T]) ->H!stop, stop_ring(T).send_msg(0,_Msg,_Ring) ->ok;send_msg(M,Msg,[H|T]) ->H ! {msg,M,Msg}, send_msg(M-1,Msg,T ++ [H]).ring_node(N,Ring) when N>0 ->Next_Pid = spawn(fun() ->loop() end), ring_node(N-1,[Next_Pid|Ring]);ring_node(0,Ring) ->lists:reverse(Ring).loop() -> receive {msg,M,Msg} -> io:format("~w:~w:~w~n",[self(),M,Msg]), loop(); stop ->true end.
0 0
- Erlang-实现进程环
- erlang进程环
- erlang进程监控的实现原理
- erlang的超轻量级进程是如何实现的
- erlang进程异常
- 理解Erlang进程
- erlang进程相关信息
- Erlang 进程字典
- erlang杂记三 ---- 进程
- erlang --进程生成测试
- erlang进程相关
- erlang进程相关信息
- ERLANG 进程整理
- ERLANG 进程字典
- erlang进程相关信息
- erlang创建进程
- erlang数据类型进程
- Erlang进程通信
- 蚂蚁感冒
- tcp数据重传时间细节探秘及数据中心优化
- C指针编程之道--------笔记
- Extjs4X的Itemselector插件使用
- ios-事件响应者链
- Erlang-实现进程环
- container_of宏定义解析
- 返回json的型式的用法
- C语言指针与二维数组
- C# Why does '+' + a short convert to 44
- Android判断上网方式(Wifi还是数据流量)
- 学习笔记:OC的protocol协议及代理设计模式
- Android 发送短信
- nasm汇编一些需要注意的地方