Erlang 消息可以发送哪些类型?

2023-11-23

主要是想知道能不能发function在分布式 Erlang 设置中的消息中。

在机器 1 上:

F1 = Fun()-> hey end,

gen_server:call(on_other_machine,F1)

在机器 2 上:

handler_call(Function,From,State) ->
{reply,Function(),State)

是否有意义?


Here是一篇关于“将 fun 传递给其他 Erlang 节点”的有趣文章。简单地恢复一下:

[...] 如您所知,Erlang 发行版 通过发送二进制编码来工作 条款;所以发送一个有趣的也是 本质上是通过使用编码来完成的 erlang:term_to_binary/1;通过 将生成的二进制文件发送到另一个节点,以及 然后使用再次解码 erlang:binary_to_term/1.[...] 这是很明显的 对于大多数数据类型;但怎么办 适用于函数对象?

当你编码一个乐趣时,编码的是什么 只是对函数的引用, 不是函数的实现。 [...]

[...]函数的定义没有被传递;如果该模块存在,那么信息就足以在其他节点上重新创造乐趣。

[...] 如果包含 fun 的模块尚未加载,并且目标节点正在交互模式下运行;然后尝试使用常规模块加载机制(包含在模块 error_handler 中)加载模块;然后它尝试查看给定 id 的 fun 在所述模块中是否可用。但是,这只在您尝试应用该函数时才会延迟发生。

[...] 如果您从不尝试应用该功能,那么就不会发生任何不好的事情。乐趣可以传递到另一个节点(其中有有问题的模块/乐趣),然后每个人都很高兴。 也许目标节点加载了一个具有所述名称的模块,但可能是不同的版本;那么很可能有不同的 MD5 校验和,那么如果您尝试应用它,您会收到错误 badfun。

我建议您阅读整篇文章,因为它非常有趣。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Erlang 消息可以发送哪些类型? 的相关文章

  • 接收缓冲区的限制

    我通过以下方式与客户端建立了连接 gen tcp listen 1234 binary packet 0 reuseaddr true active false recbuf 2048 此代码执行消息处理 loop Socket gt in
  • erlang - 如何将元组内容与 qlc 和 mnesia 匹配?

    我有一个记录该记录的记忆表 record peer peer key key is the tuple FileId PeerId last seen last event uploaded 0 downloaded 0 left 0 ip
  • Erlang 中的 begin...end 有何用途?

    我刚刚踩了一个begin end在 Erlang 的文档中 here http www erlang org doc reference manual expressions html id79819 但它没有给出一些例子来说明它是如何有用
  • 分布式erlang安全如何?

    我想要有 2 个独立的 erlang 节点可以相互通信 so node a myhost将能够发送消息至b myhost 有没有办法限制节点a myhost 所以只有来自 a 的函数安全模块可以被召唤b myhost 它应该是这样的 a m
  • Erlang中socket的“packet”选项怎么能如此加速tcp传输呢?

    使用 packet 4 通过本地主机上的两个不同端口传输1G数据只需要8秒 而使用 packet raw 则无法在30秒内完成相同的任务 我知道如果使用后一种方法 数据将以数万个小块的形式到达 在archlinux上大小为1460字节 我已
  • Mnesia 返回 {aborted, no_transaction}

    我有一个名为 Mnesia 的表person 使用以下记录定义 record person id firstname lastname phone 该表包含以下值 12 alen dumas 97888888 13 franco mocci
  • 选择用于实现分布式消息传递算法的编程语言

    基本上 我想实现以下算法并分析使用这些算法构建的系统在不同条件下的行为 八卦协议 多个paxos 一致的散列 我的兴趣在于这些算法 我基本上是在寻找一种编程语言 可以让我快速编写这些算法并深入理解这些算法 我应该选择哪种语言 Java Sc
  • 如何在 erlang 中格式化包含整数的平面字符串?

    在erlang中 我想格式化一个包含整数的字符串 并且我希望结果被展平 但我明白了 io lib format sdfsdf B 12312 115 100 102 115 100 102 32 12312 我可以使用下面的代码获得所需的结
  • Erlang 中的 Apple 推送通知(或 Ruby 中的改进?)

    目前 我的服务器上有一个使用 Ruby 运行的 Apple 推送通知 我想在 Erlang 中使用一个 因为我想使用一个主管来监视它 有人有任何代码可以帮助我吗 这是我的 Ruby 代码 我不喜欢当前实现的一件事是它似乎无法保持连接 它每天
  • 使用 OTP 原理的非阻塞 TCP 服务器

    我开始学习 Erlang 所以我尝试写 hello world 并发编程 IRC 机器人 我已经使用 Erlang 编写了一个 没有任何 OTP 细节 管理程序 应用程序等行为 我希望使用 OTP 原则重写它 但不幸的是我无法找出使用 OT
  • Elixir / Erlang Dialyzer:为什么行为回调的参数类型应该是子类型而不是超类型?

    我有一个行为 X 和一个参数类型的回调函数 a any 模块 Y 实现行为 X 实现模块 Y 中的回调函数具有参数类型 a any b any Dialyzer 不喜欢这样并抱怨 a b gt is not a supertype of a
  • Erlang 生成问题

    我在 erlang 中遇到了 spawn 问题 似乎进程在一段时间后就死掉了 这是简单的代码 module simple export server 1 client 1 owner 1 spawn n 2 start 1 main 1 s
  • 在 Erlang 中使用完全限定的函数调用?

    我刚刚学习了如何在 Erlang 中升级模块 并且我知道只有使用完全限定名称的函数调用 例如module function 重新链接 到加载到 VM 中的当前版本 但未指定模块名称的函数调用不会 重新链接 到当前版本 而是继续使用旧版本 关
  • RabbitMQ 失败,错误:无法连接到节点rabbit@TPAJ05421843:nodedown

    在 Windows 7 Enterprise 计算机上 我全新安装了 Erlang 17 4 和 RabbitMQ 3 4 3 x64 安装成功且顺利 我还没有尝试创建我的第一个队列或交换器 但我已经看到了麻烦 这个问题类似于另一个SO帖子
  • 使用字符串将 Erlang 映射编码为 JSON 以便通过 Javascript 进行解析?

    我正在尝试使用 Erlang 地图 例如 breakfast gt leftovers 并编码为 JSON 映射 例如 我尝试使用 jiffy 转换列表 email protected cdn cgi l email protection
  • 我们如何有效地处理 mnesia 记录的时间相关约束?

    我正在将记录写入mnesia 该记录应该保存在那里 仅在允许的时间 24 小时 内 24小时后 在用户修改其中的一部分之前 系统应该自动删除它们 例如 用户获得免费通话时间 用于语音通话 他们应该在给定时间内使用它们 如果他们不使用它 24
  • 您应该将应用程序属性放在 rebar erlang 应用程序中的什么位置?

    新手问题 我编写了第一个基于 rebar 的 erlang 应用程序 我想配置一些基本属性 例如服务器主机等 放置它们的最佳位置在哪里以及如何将它们加载到应用程序中 接下来的步骤是发布版本并在其中创建节点 节点在独立的 Erlang VM
  • Erlang 参与者与 OOP 对象有何不同?

    假设我有一个 Erlang actor 定义如下 counter Num gt receive From increment gt From self new value Num 1 counter Num 1 end 同样 我有一个 Ru
  • 拦截登录/注销ejabberd

    我想知道用户何时在自定义模块中的 ejabberd 会话中登录和注销 而不更改 ejabberd 代码 我需要它 因为我必须在用户登录时执行一些操作 并清理用户注销时执行的操作 另外 在某些情况下我需要能够注销用户 那么 有没有办法扩展某些
  • 停止 Erlang 守护进程

    除了跑步 killall 9 beam smp 当我知道 Erlang 节点的情况时 如何以编程方式杀死它 sname 如果我不希望心跳监视器重新启动该进程 如何确保上述问题的任何答案也会终止心跳 有没有一个不错的指南来将 Erlang 部

随机推荐

  • 如何从突变中获取新对象的ID?

    我有一个createObject突变返回新对象的 ID 返回后 我想重定向到有关新对象的详细信息页面 如何使用反应 中继从包含组件中的突变获取响应字段 E g my createObject页面包含如下代码的突变 var onFailure
  • Fortran 派生类型实例的用户定义构造函数

    这是我与Fortran相关的第二个问题 我使用C 所以请原谅我的思维方式 我想在适当的时候使用 OOP 也就是说 在 Fortran 中使用派生类型 在 C 中 您可以使用用户定义的构造函数 例如https msdn microsoft c
  • 使用内置函数名称作为属性或方法标识符是不好的做法吗?

    我知道永远不要使用内置函数名称作为变量标识符 但是有什么理由不使用它们作为属性或方法标识符呢 例如 这样写是否安全my object id 5 或者定义一个实例方法dict在我自己的班级 它不会让解释器感到困惑 但可能会让阅读代码的人感到困
  • SIM工具包应用-Javacard开发套件

    我正在尝试开发 STK 应用程序 但我不知道在哪里可以获得开发套件 现在对于 Javacard 我从 Oracle 网站获得了一个 但它没有 sim toolkit 包 我不想从金雅拓等公司购买它 是否有任何 免费 实施 我已经找到了欧洲电
  • Ruby 单元测试:这是有效的(格式良好的)XML 文档吗?

    我正在创建一个 XML 文档 我想进行单元测试 至少确保其格式良好 到目前为止 我只能通过使用 REXML 库中的 hasElements 来近似这一点 有没有更好的办法 最好使用内置库 我的意思是标准 Ruby 1 8 x 发行版附带的库
  • eax 在 pt_regs 结构中的哪里?仅存在斧头

    我正在尝试使用pt regs用于获取和设置寄存器的结构 例如eax 但是编译错误告诉我pt regs没有该成员eax 但是 我能够得到ax登记 谁能告诉我发生了什么事吗 我正在使用 32 位 Ubuntu linux3 0 0核心 再次感谢
  • 检查数组中是否存在对象

    我有一个包含多个人物对象的数组 该对象如下所示 id 1 name Max Muster email email protected language German 现在 我在另一个数组中找到了对象 它们看起来并不完全相同 id 1 nam
  • 如果 Alamofire 图像中存在磁盘缓存图像,则使用磁盘缓存图像

    我正在使用阿拉莫火图像库来缓存下载的图像 Code import UIKit import AlamofireImage class ViewController UIViewController IBOutlet weak var fir
  • 如何让 Spoon 为 Espresso 测试截图?

    我一直在努力追随有关让 Spoon 1 1 14 为失败的 Espresso 测试截取屏幕截图的说明 配置此功能的最佳方法是什么自定义 Espresso FailureHandler 这是我目前正在做的事情 public class Mai
  • 阅读 WP8 上的 SSL 证书详细信息

    出于安全原因 我想阅读证书详细信息 例如到期日期或 CN 通常网络类中有一些可用的属性 允许检查证书 WP8 实现中缺少此功能 我还尝试创建一个 SslStream 但也无法获取任何证书详细信息 例如远程证书在 net 4 5 上 var
  • jQuery Mobile 更改下拉所选选项并刷新它

    我正在编写 jQuery 移动应用程序 我正在通过以下语句更改下拉选择的选项 DataBaseNames val db 我确信传递了正确的数据库值 因为我通过警报检查了它 当我深入下拉菜单时 它还显示所选的正确文本 但下拉菜单本身未显示所选
  • 将文件流式传输到 Pylons 中的 HTTP 响应

    我有一个 Pylons 控制器操作 需要将文件返回给客户端 该文件位于网络根目录之外 因此我不能直接链接到它 当然 最简单的方法是 with open filepath rb as f response write f read 这可行 但
  • 使用 pandas.DataFrame.interpolate 将行添加到 DataFrame

    我有一个具有以下格式的 Pandas 数据框 Frequency Value 1 10 2 8 2 20 2 5 3 30 2 2 4 40 2 3 我想用pandas DataFrame interpolate为了在频率 35 处添加一条
  • 为什么我的 vim 不知道我的别名?

    我使用了 alias ruby ruby1 9 1 所以我可以用这个执行我的 ruby 红宝石 123 rb or 红宝石1 9 1 123 rb 但在我的 vim 中 我使用 ruby 并得到 bin bash ruby 找不到命令 我必
  • 如何避免 Vscode 中将头文件放在与 src 不同的目录中时出现错误

    好吧 我在 VSCode 中遇到了错误问题 基本上我决定重新组织并将我的头文件移动到一个单独的文件夹 include 中 我的目录简单如下 build include SDL2 SDL2 Image someHeaderFile1 h so
  • 导致 java.lang.IllegalStateException: Post Too Large in tomcat / mod_jk 的原因

    为了增加允许的最大帖子大小 需要调整哪些配置以及它位于哪里 Apache Tomcat 默认情况下对其接受的 HTTP POST 请求的最大大小设置限制 在 Tomcat 5 中 此限制设置为 2 MB 当您尝试上传大于 2 MB 的文件时
  • PHP 非阻塞函数

    我有一个项目 其中用户通过表单上传图像 服务器则执行一些缩略图 缩略图制作过程非常慢 因此我认为使用非阻塞函数调整图像大小可能是一个很好的解决方案 我的意思是 服务器处理表单 有更多字段 向用户提供 ok 反馈 然后调用缩略图功能 我怎样才
  • 为什么切换服务器后 Laravel 会话在 Safari 和 IE 中会失败?

    带有 Webmin Apache Centos 6 Laravel 应用程序和旧数据库架构的新 VPS 服务器 在旧的共享主机上一切正常 但在 VPS 上由于某种原因 Laravel 的会话存储 Laravel 3 0 不再在 Safari
  • 有没有简单的方法来突出面膜?

    如果我有像这样的面具 我有一个图像 大小与面具相同 就像 我想突出显示图像中的蒙版 如果我用其他语言 我只是 正如你所看到的 结果图像有一个透明红展示面具 我希望在 OpenCV 中实现这一点 所以我写这段代码 include
  • Erlang 消息可以发送哪些类型?

    主要是想知道能不能发function在分布式 Erlang 设置中的消息中 在机器 1 上 F1 Fun gt hey end gen server call on other machine F1 在机器 2 上 handler call