继上一篇《erlang(初级)》后,继续来一个erlang中比较优秀的特色:concurrency。
erlang中每一个thread的叫法是process,可能行为上更像进程吧。
语法:
1,new一个process:spawn(module_name, exportFunction, argsList)。
例如:spawn(tut, say_something, hello).
其中tut是module的名字,say_something是tut中export的方法,atom类型的hello是方法say_something的参数。
2,process之间的通讯:
receive方法:接收消息的方法。每一个process都有自己的input queue。每次receive执行对queue中消息进行匹配接收,如果第一个消息匹配失败,则进行第二个消息匹配,直到匹配成功,如果所有都失败,则当前process将wait新的message进行匹配。receive语法:
receive
pattern1 ->
actions1;
pattern2 ->
actions2;
....
patternN
actionsN
end.
process之间消息可以是简单合法的erlang中的terms。比如list,tuple,integer,atom,pid等(pid就是process的ID,由spawn返回)。
Pid ! Message:
这是发送消息的方法。例如:PID ! hello. PID01 ! {hello, self()} (其中self()方法返回的是当前process的pid)。
3,注册process:
register(some_atom, Pid)。
例如:register(process2, spawn(tut, say_something, [hello]))。
然后就可以直接用process2代表spawn返回的pid。
分布式:
首先,erlang对分布式的安全有鉴权。最简单的方法就是在每一台分布式环境下的机器中的home目录下放一个文件".erlang.cookie",当然,文件里的内容也要一样的。这里注意一下,所说得home目录并不是指运行erlang的根目录,在windows中通过path中的HOME环境变量来指定,在linux和unix中,cd所进入的目录就是home目录。
至于文件的内容嘛,根据官方文档描述,只是一个atom。例如:helloworld。可能是初衷于手机使用,校验简单节省资源的原因吧。
同一个IP domain,一个node启动erlang系统的命令:erl -sname node1
不同IP domain,则用-name代替 -sname
访问process:普通环境下直接访问process的ID即可。分布式下以这种方式访问:{registered_name,node_name} 例如:{process1, process1@node1}。
先写到这,累了,后续......
分享到:
相关推荐
标题中的"erlang-23.2.3-1.el7.x86_64.rpm"和"erlang-23.2.1-1.el7.x86_64.rpm.rar"代表了两个不同的Erlang版本。`.rpm`文件是用于Red Hat Enterprise Linux (RHEL) 和其衍生发行版如CentOS的软件包管理格式,而`....
在标题"erlang-22.3-1.el7.x86_64.rpm"中,我们可以解读出几个关键信息: 1. **版本号**:22.3-1表示这是Erlang的一个特定版本,22.3是主版本号和次版本号,而-1可能代表修订或更新次数。 2. **操作系统兼容性**:...
erlang-24.3.3-1.el9.x86_64.rpm centos
"erlang-rpm-21.3.4.zip"是一个包含Erlang版本21.3.4的RPM(Red Hat Package Manager)包的压缩文件,适用于Linux操作系统,尤其是基于RPM包管理系统的发行版,如CentOS、Fedora和RHEL等。 Erlang的主要特点包括: ...
erlang-21.3-1.el7.x86_64.rpm rabbitmq基础语言环境。
erlang-20.3-1.el7.centos.x86_64.rpm
在标题中的"erlang-18.3-1.el7.centos.x86_64.zip",我们看到的是Erlang的一个特定版本,18.3,针对64位的CentOS 7操作系统(el7)的安装包。这个版本的Erlang包含了必要的组件和服务,使得它能够在CentOS 7上稳定...
erlang-24.0.3-1.el8.x86_64.rpm资源
erlang-xmerl-23.0.2-2.el7.x86_64.rpm,rabbitMQ安装需要依赖此环境。Erlang 是一种多用途编程语言,主要用于开发并发和分布式系统。它最初是一种专有的编程语言,Ericsson 使用它来开发电话和通信应用程序。
erlang-erts-19.3.6.4-1.el7.x86_64.rpm
erlang-sd_notify-1.0-2.el7.x86_64.rpm
erlang-20.3.8.17-1.el7.centos.x86_64
标题中的"erlang-19.0.4-1.el7.centos.x86_64.zip"揭示了我们讨论的是Erlang的一个特定版本——19.0.4,该版本针对的是Linux发行版CentOS 7的64位架构。Erlang的版本号通常包括主要版本号、次要版本号和补丁版本号,...
- 使用yum安装Erlang:`sudo yum install erlang-23.3.4.3-1.el7.x86_64.rpm` 2. **安装RabbitMQ**: - 下载RabbitMQ RPM包:`wget https://your_download_link/rabbitmq-server-3.8.17-1.el7.noarch.rpm` - ...
erlang-21.3.1-1.el7.x86_64.rpm
erlang-19.0.4-1.el7.centos.x86_64.rpm ,官网的正式包
erlang-xmerl-22.3-1.el7.x86_64.rpm,rabbitMQ安装需要依赖此环境。Erlang 是一种多用途编程语言,主要用于开发并发和分布式系统。它最初是一种专有的编程语言,Ericsson 使用它来开发电话和通信应用程序。
erlang-23.1-1.el8.x86_ ,erlang官网下载很慢,所以提供该下载链接。
https://github.com/rabbitmq/erlang-rpm.git源码在centos6.8x64系统下编译的rpm文件