it编程 > 前端脚本 > Erlang

Erlang中的注册进程使用实例

82人参与 2024-05-15 Erlang

之前看到 erlang 中的注册进程时,对注册并不理解,主要是不理解注册的原子的作用域。刚才突然想明白了:

也就是说关联了注册进程之后的原子可以全局被使用

erlang 中的并发机制是通过消息邮箱实现的,进程间进行通讯的方式只有消息邮箱,而进程间通讯需要知道进程的进程号,而使用 spawn 产生新进程时会返回新进程的进程号供使用。

一个最简单的进程间通信的程序如下

在 erlang shell 中使用 c(test) 编译这个模块,之后就可以简单的使用了.

在下面的代码中,语句前面的注释表示解释,语句后面的注释表示输出值, % => 后面的值表示语句的返回值

为了用户不用每次都 pid ! 'message',可以加入一个 call 方法进行包装一下。

这样就可以使用 test:call(pid, 'message') 发送消息了。

但是这样写还有个明显的弊端,调用 call 时需要 pid 参数,但是又不能去掉,因为需要进程号才能通信,所以使用时需要用户维护一个进程号。

而 erlang 提供了注册进程的机制用来把原子关联到进程中,可以解决这个问题

使用 register(atom, pid) 可以将 atom 关联到进程号为 pid 的进程上,这个原子就

修改上面的 start 函数为

这样,新的进程将关联到原子 testp,此时原子就可以当作 pid 那样使用 "消息发送操作符" !

于是可以修改上面的 call 函数,去掉 pid 参数,而使用关联后的原子,这个关联后的原子不止在模块内有效,在全局作用域中都是有效的。

因此使用注册进程修改后的程序如下

注册相关的 bif

(0)
打赏 微信扫一扫 微信扫一扫

您想发表意见!!点此发布评论

推荐阅读

Erlang分布式节点中的注册进程使用实例

05-15

Erlang程序设计(第2版)读书笔记:Erlang安装和基础语法

05-15

Erlang中的映射组Map详细介绍

05-15

Erlang项目内存泄漏分析方法

05-15

Erlang初学:Erlang的一些特点和个人理解总结

05-15

CentOS 6.5源码安装Erlang教程

05-15

猜你喜欢

版权声明:本文内容由互联网用户贡献,该文观点仅代表作者本人。本站仅提供信息存储服务,不拥有所有权,不承担相关法律责任。 如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 2386932994@qq.com 举报,一经查实将立刻删除。

发表评论