首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

如何在Erlang中创建一系列已注册的进程名称?

在Erlang中创建一系列已注册的进程名称,可以使用register函数。register函数可以将一个进程名与当前进程关联起来。这样,你就可以使用该进程名来发送消息给这个进程。以下是一个简单的示例,演示如何在Erlang中创建一系列已注册的进程名称:

代码语言:erlang
复制
-module(register_processes).
-export([start/0]).

start() ->
    % 创建一个已注册的进程名称
    register(process_1, spawn(fun() -> loop() end)),

    % 创建另一个已注册的进程名称
    register(process_2, spawn(fun() -> loop() end)),

    % 发送消息给已注册的进程名称
    process_1 ! {self(), "Hello, process_1!"},
    process_2 ! {self(), "Hello, process_2!"},

    % 等待消息回复
    receive
        {From, Msg} ->
            io:format("Received message from ~p: ~p~n", [From, Msg])
    end,

    % 停止进程
    process_1 ! stop,
    process_2 ! stop.

loop() ->
    receive
        {From, Msg} ->
            io:format("Received message from ~p: ~p~n", [From, Msg]),
            From ! {self(), "Hello, you sent a message to me!"},
            loop();
        stop ->
            io:format("Stopping process...~n")
    end.

在这个示例中,我们创建了两个已注册的进程名称process_1process_2,并向它们发送了消息。然后,我们等待消息回复,并在接收到消息后停止这两个进程。

注意:这个示例仅用于演示如何在Erlang中创建一系列已注册的进程名称。在实际应用中,你可能需要根据具体需求进行调整。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

回顾Erlang简要

Erlang创建和销毁进程非常快 在进程间发送消息非常快 进程在所有操作系统上都具有相同行为方式 可以拥有大量进程 进程间不共享内存,完全独立 唯一沟通方式是消息传递,每个进程都有一个邮箱与进程同步创建...使用记录情形: 1) 用一些预先确定且数量固定原子表示数据 2) 元素数量和元素名称不会随时间改变 3) 大元组每个元组有相同结构 采用#myrecord{k1=v1,k2=v2..}来创建record...用来表示键值解析树,xml或配置文件 6) 用Json来通信 映射组语法: #{key1 op val1,key2 op val2,…,KeyN op valN} '#后没有名称,op是=>或:=之一...并发 Erlang基本并发函数: 1) Pid =spwan(Mod,Func,Args) 创建一个新进程来执行apply(Mod,Func,Args),与调用进程并列运行,会使用最新代码定义模块...进程注册内置函数有: register(AnAtom,Pid)用名称注册Pid uregister(AnAtom) 注销关联注册 whereis(AnAtom)->Pid|undefined 检查Pid

1.2K40

快速学习-RabbitMQ快速入门

2 快速入门 2.1 RabbitMQ工作原理 下图是RabbitMQ基本结构: ? 组成部分说明如下: Broker:消息队列服务进程,此进程包括两个部分:Exchange和Queue。...语言一部分,包含了很多基于Erlang开发中间件及工具库,安装RabbitMQ需 要安装Erlang/OTP,并保持版本匹配,如下图: RabbitMQ下载地址:http://www.rabbitmq.com...=D:\Program Files\erl9.3 在path添加%ERLANG_HOME%\bin; 2)安装RabbitMQ https://github.com/rabbitmq/rabbitmq-server...当卸载重新安装时会出现RabbitMQ服务注册失败,此时需要进入注册表清理erlang 搜索RabbitMQ、ErlSrv,将对应项全部删除。...(); /*** 声明队列,如果Rabbit没有此队列将自动创建 * param1:队列名称 * param2:是否持久化 * param3:队列是否独占此连接 * param4:队列不再使用时是否自动删除此队列

1K30

RabbitMQ集群和高可用方案

Erlang虚拟机和RabbitMQ服务应用 如果指定了pid_file,还需要等待指定进程结束。...pid_file是通过调用rabbitmq-server命令启动RabbitMQ服务时创建,默认情况下存放于Mnesia目录。...rabbitmqctl reset 将RabbitMQ节点重置还原到最初状态 包括从原来集群删除此节点,从管理数据库删除所有的配置数据,配置用户,vhost等,以及删除所有的持久化数据 执行...集群名称在客户端连接时会通报给客户端 集群名称默认是集群第一个节点名称,通过这个命令可以重新设置 Federation插件 Federation插件设计目标是使RabbitMQ在不同Broker节点之间进行消息传递而无需建立集群...,该功能在以下场景下非常有用: 各个节点运行在不同版本Erlang和RabbitMQ上 网络环境不稳定,广域网当中 Federation作用: ?

9.9K20

.NET Core微服务之基于EasyNetQ使用RabbitMQ消息队列

是一款优秀消息队列组件,他由两部分组成:服务端和客户端,客户端支持多种语言驱动,:.Net、JAVA、Erlang等。   ...  开发环境下,我一般使用Windows Server虚拟机,所以这里说明下如何在Windows下安装:   (1)下载Erlang和RabbitMQ (这里我选则并非最新版本,而是etp20.3和...Tab查看目前已有的队列=>可以看到目前我们只注册了一个队列 四、在ASP.NET Core使用 4.1 案例结构与说明   这里假设有这样一个场景,客户通过浏览器提交了一个保单,这个保单包含一些客户信息...下面是这个demo用到一个消息对象实体:通过标签声明队列名称。...当然,本篇内容都十分基础,如果要应用好RabbitMQ,还得把那些基础概念(:Channel,Exchange等)弄清楚,然后去理解一下事件总线概念,实际还得考虑数据一致性等等,路途漫漫,继续加油吧

5K50

Erlang 03 - Erlang缺陷

数据类型 内存占用量 小整数 1个字 大整数 至少3个字(可按需增长) 浮点数 在32位架构下占4个字, 在64位架构下占3个字 原子 1个字(原子名称字符串仅存在Erlang节点原子表) 二进制串或位串...原子名称字符串保存在一张原子表, 每个Erlang节点只存一份. 原子所占用那个字中保存实际上是原子表对应字符串索引....如前所述, Erlang进程十分廉价. 大量进程并发运行在Erlang可谓司空见惯. 然而每个进程执行工作却会对整个系统性能产生显著影响....要不要用OTP行为模式 虽然新进程创建仅需数毫秒, 但OTP行为模式容器进程初始化却是另外一回事. gen_server:start_link()调用会引发一系列动作, 包括调用行为模式实现模块...给予proc_lib进程, gen_server及其他OTP行为模式, 应该使用proc_lib:hibernate/3而不是erlang:hibernate/3, 以确保进程醒来后周遭一切都遵照OTP

1.6K30

027. RabbitMQ 集群和高可用方案

rabbitmqctl stop [pid_file] 停止运行 RabbitMQ Erlang 虚拟机和 RabbitMQ 服务应用。 如果指定了 pid_file,还需要等待指定进程结束。...pid_file 是通过调用 rabbitmq-server 命令启动 RabbitMQ 服务时创建,默认情况下存放于 Mnesia 目录。...包括从原来所在集群删除此节点,从管理数据库删除所有的配置数据,配置用户、vhost 等,以及删除所有的持久化消息。...元数据包含以下内容: 队列元数据:队列名称及属性。 交换器:交换器名称及属性。 绑定关系元数据:交换器与队列或者交换器与交换器。...如果大于此值,而且一个包含镜像节点停止,则新镜像不会再其他节点创建。 nodes nodename 队列镜像到指定节点,指定节点不在集群不会报错。

74710

上帝说:要有一门面向未来语言,于是有了 erlang

这些朴实无华,看上去似乎没什么大不了句子,构成了 erlang 世界基石。 我来将其分成四个部分解读。 process(进程) 在 erlang 世界里,万事万物都是 process。...所以,erlang VM 能创建 process 理论上取决于内存大小,我们可以轻易创建百万级,甚至千万级 process(32bit CPU pid 用 28 bit,64 bit CPU...; 如何在不同机器上把你软件连成一个 cluster; 如何在 release 之间 upgrade / downgrade。...erlang 虽然是强类型语言,但运行时才做类型检查这也让很多人诟病。这并非 erlang 作者不想这么做,而是不得。...我们不该奢望 erlang 做计算密集型任务还能像 C 一样「指疾风势闪电」。 先讲这些吧,一不小心又写了六火车时。

1.3K110

linux下安装opencv_linux下安装pycharm

大家好,又见面了,我是你们朋友全栈君。 摘要:为了简单起见,在安装过程默认关闭了firewalld防火墙 和 SELinux。实际生产中,则不这样子做,而是开放相应端口,以增强安全性。...(2)监控者(monitoring):可登陆管理控制台(启用management plugin情况下),同时可以查看rabbitmq节点相关信息(进程数,内存使用情况,磁盘使用情况等)。...3、可以看到创建admin用户一栏Can access virtual hosts显示 No access,即admin用户没有可以访问虚拟主机 4、创建虚拟主机,点击Virtual Hosts...,输入虚拟主机名称,格式一般以 斜杠/ + 名称,最后点击Add virtual host 5、可以看到添加好 /rabbitmq虚拟主机 6、点击Users,找到Name下admin并点击,为其添加可访问虚拟机...发现本站有涉嫌侵权/违法违规内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

24.7K10

Erlang Concurrent 并发进阶

在一个Erlang程序很容易创建并行执行(parallel execution)线程,并且运行这些这些线程互相通信。Erlang,每个执行线程称之为进程(process)。...Erlang执行线程不共享数据,这就是为什么它们叫做进程原因) Erlang内置函数spawn用于创建一个新进程:spawn(Module, Exported_Function, List of Arguments...进程注册 在之前例子,“pong”进程最先被创建,并将它进程标识符给接下来创建“ping”进程作为参数。也即是说,“ping”必须通过某种方式知道“pong”进程才能向它发送消息。...有一点不同是消息怎样发送给另一个节点上注册进程: {pong, Pong_Node} !...在钱例子,‘’ping”和“pong”由两个独立Erlang节点shell启动,也就是说spawn可以在不同节点上启动进程

2.4K40

不是语言之争--Go vs Erlang

并发 Go 对高并发支持通过 goroutine 实现。goroutine 可以理解为轻量级 线程(thread)。同一个 Go 应用创建 goroutine 共享地址空间。...Erlang 高并发通过轻量级 进程(process)实现,每一个进程都有独立状态记录。...Erlang 垃圾回收是 进程 级别的,每一个进程都有自己独立垃圾回收器,一个进程垃圾回收被触发,不会造成其他进程被挂起。相对来说带来业务延迟小。...错误处理 Erlang 每一个进程都有 进程 ID (PID),同时也可以给进程注册名字,也就是说每一个进程都有独立身份,可以有效监控每一个进程状态。...但使用 Erlang 过程Erlang 缺乏静态检查手段,也是一个很麻烦问题,目前做法是要求大家都使用 IntelliJ IDEA 编写代码,可以通过 IDE 提前发现部分语言问题。

2.5K90

LINC switch系列之架构分析与源码探索

1.入门Erlang shell,很多对运行系统更改都可以通过shell操作实现。 2.理解Erlang数据结构,比如元组,列表等。 3.理解rebar,一个Erlang应用打包工具。.../TAP接口,代码地址:https://github.com/msantos/tunctl procket:这个Erlang库用来创建和操作套接字,代码地址:https://github.com/msantos...OF-config控制器,Ryu)。...LINC backendErlang组件工作流程(蓝色数字): 1.Erlang进程管理OF port收到来自网络接口数据包。 2.数据被解包并翻译为Erlang term。...app目录:该目录是数个LINC Erlang应用,LINC与其他大多数Erlang项目一样均使用rebar打包。 docs目录:里面包含一系列文档,可供参考。

91360

何在Ubuntu 16.04上使用Distillery和edeliver自动化Elixir-Phoenix部署

此外,请确保允许使用命令sudo ufw allow 4000在安装教程步骤7访问端口4000。这是我们在本教程中用于测试Phoenix端口。 在生产服务器上安装Nginx。 完全注册域名。...文件包含某些内容,请添加一个空行,将此新配置与任何现有配置分开。...告诉Phoenix如何在生产环境访问项目。...此外,该文件告诉Git忽略所有Phoenix项目目录prod.secret.exs文件,在config文件包含非常敏感信息,生产数据库密码和用于签署令牌应用程序机密。...并且,该cookie值用于验证Erlang节点以便彼此通信。 关闭文件。 我们现在准备好配置edeliver,但我们必须手动创建其配置文件。

4.2K00

Erlang语言不是用来解决所有问题语言

整个软件行业也在发生重大变革,由卖工具软件转向卖服务(软件免费,这也是开源软件兴起过程),由单纯客户端向B/S或C/S转化,相应存储和计 算向服务器端转移,由原来PC客户端向客户端多元化(手机、...要添加一个节点仅仅需要将其指向任何一个建节点就可以了。只要这两个节点建立了连接,所有其他节点马上 就会感应到新加入节点。...Erlang进程使用进程ID向其他进程传递报文,进程ID包含着运行此进程节点信息。因此进程不需要理会正在与其交流其他 进程实际在何处运行。...Erlang始于20年前,是一个并发性Prolog,Joe Armstrong创造了它。第一个大型Erlang项目是一个由几百人创建电信交换系统,系统有数百万行代码。...系统结构被设计为底部是工作进程(它们可能会失败),上层是管理进程,它们可以重新启动失败进程。 我不相信其它语言能迅速赶上Erlang。对其它语言而言,加入像Erlang这样语言特征是很容易

91800

Erlang 和 VoltDB 玩转 877,000 TPS

我想介绍一下我们创建 Erlang VoltDB 驱动程序,这是一个允许两种类型定义技术一起工作软件:VoltDB 3 和 Erlang 4。...我也曾经在编程服务器上寻找比 Java 更好语言,为此 Erlang 7 引起了我注意。为了能够一起使用它们 8,我开始为 VoltDB 9 创建 Erlang 驱动程序。...我能够从维护 Erlang MySQL 驱动程序 Emysql 经验得出结论 13 来确保可靠,一贯高吞吐量。连接池和队列仿照那些可靠主力,最初在 EA 设计。...发送请求后,如果选择异步模式,启动进程将被阻塞在同步接收(当然,这并不会阻塞所有其他进程),或者继续执行。服务器相应将到达您进程 mailbox。...监控模式,创建一个工作进程来处理发送请求,从而保护您启动进程免受驱动程序任何中断。你可以 一劳永逸,因为你不在乎他们是否成功了,或者失败。

2K60

RabbitMQ系列2 RabbitMQ安装与基础入门

基于此协议客户端与消息中间件可传递消息,并不受客户端/中间件不同产品,不同开发语言等条件限制。Erlang实现有RabbitMQ等。 ?...消息体是不透明,而消息头则由一系列可选属性组成,这些属性包括routing-key(路由键)、priority(相对于其他消息优先权)、delivery-mode(指出该消息可能需要持久性存储)等...Channel 信道,多路复用连接一条独立双向数据流通道。...2、 监控者(monitoring) 可登陆管理控制台,同时可以查看rabbitmq节点相关信息(进程数,内存使用情况,磁盘使用情况等) 3、 策略制定者(policymaker) 可登陆管理控制台,...RabbitMQ退出时它会将队列信息保存到 Erlang自带Mnesia数据库 ,当RabbitMQ重启之后会读取该数据库 ; ** 3. exclusive: 是否排外 ; 当exclusive

43310
领券