Erlang中基本的并发函数

1)  Pid =spwan(Mod,Func,Args) 创建一个新的进程来执行apply(Mod,Func,Args),与调用进程并列运行,会使用最新的代码定义模块。
2)  Pid!Message 向Pid进程异步发送Message,!为发送操作符
3)  Receive … end 接收消息
复制代码 代码如下:
 receive
           Pattern1[when Guard1]-> Expression1;
           Pattern2[whenGuard2]->Expression2;

         aftertime->
                   Expressions
         end.

内置函数erlang:system_info(process_limit)可找出所允许的最大进程数,默认为262144.
进程注册的内置函数有:
register(AnAtom,Pid)用名称注册Pid
uregister(AnAtom) 注销关联注册
whereis(AnAtom)->Pid|undefined 检查Pid是否注册
registered()->[AnAtom::atom()]返回系统里所有注册进程的列表。
 
并发程序模板:
复制代码 代码如下:
-module(ctemplate).
-compile(export_all).
 
start() ->
         Spwan("codetitle">复制代码 代码如下:
-spec spwan_link(Fun) ->Pid
-spec spwan_monitor(Fun)-> {Pid,Ref}
-spec process_flag(trap_exit,true)
-spec link(Pid) ->true
-spec unlink(Pid) -> true
-spec erlang:monitor(process,Item) ->Ref
-spec exit(Why) -> none()

分布式模型:分布式erlang 和基于socket的分布式模型。分布式erlang运行在可信网络,通常在同一局域网的集群上,并受防火墙保护。基于socket的分布式模型基于TCP/IP不可信网络.
分布式Erlang的主要问题在于客户端可以自行决定在服务器上分裂出多种进程,适合于你拥有全部的机器,并且想在单台机器上控制他们。lib_chan 模块让用户能够显式控制自己的机器分裂出哪些进程。
 
为了在互联网上执行并发程序:

1)  确保4369端口对TCP和UDP都开发,该端口保留给epmd(Erlang端口映射守护进程)
2)  选择1个或一段连续的端口给分布式erlang使用,确保这些端口开放,例如:

复制代码 代码如下:
$erl  -name …-setcookie …  -kernelinet_dist_listen_min Min \
           Inet_dist_listen_maxMax

Rpc提供了许多远程调用服务,global里的函数可以用来在分布式系统里注册名称以及维护一个全连接的网络。

Erlang集群就是一组带有相同cookie的互连节点。创建cookie的三种方法:
1)  在文件$HOME/.erlang.cookie存放相同的cookie
2)  在Erlang启动时,可以用 –setcookie,例如
复制代码 代码如下:
$erl  -setcookieABCDEFG2048

3)  内置函数erlang:set_cookie(node(),C)在程序中指定

Erlang通过名为端口的对象与外部程序通信,如果想端口发送一个消息,这一消息就会被发往与端口相连的外部程序,来自外部程序的消息会变成来自端口的Erlang消息。创建端口的进程成为端口的相连进程,所有发往端口的消息都必须标明相连进程的PID,所有来自外部程序的消息都会发往相连进程。

标签:
Erlang,并发程序

免责声明:本站文章均来自网站采集或用户投稿,网站不提供任何软件下载或自行开发的软件! 如有用户或公司发现本站内容信息存在侵权行为,请邮件告知! 858582#qq.com
评论“Erlang中的并发程序简介”
暂无“Erlang中的并发程序简介”评论...

RTX 5090要首发 性能要翻倍!三星展示GDDR7显存

三星在GTC上展示了专为下一代游戏GPU设计的GDDR7内存。

首次推出的GDDR7内存模块密度为16GB,每个模块容量为2GB。其速度预设为32 Gbps(PAM3),但也可以降至28 Gbps,以提高产量和初始阶段的整体性能和成本效益。

据三星表示,GDDR7内存的能效将提高20%,同时工作电压仅为1.1V,低于标准的1.2V。通过采用更新的封装材料和优化的电路设计,使得在高速运行时的发热量降低,GDDR7的热阻比GDDR6降低了70%。