如果 Node 必须具有与客户端节点相同的可加载模块,那么 Erlang 上的 Spawn(Node, Fun) 有何意义?

2023-11-21

为什么要制造出您正在向远程节点发送 Fun 以在新进程中执行的错觉?无论如何,如果客户端节点必须具有可加载的相同模块,并且 Fun 定义为服务器节点。为什么不仅是spawn(Node, M, F, A),这清楚地表明您正在发送函数调用的定义,而不是Fun 本身。


让我们考虑两种可能的情况

引用模块函数的函数

Fun = fun file:getcwd/0,
erlang:spawn(Node, Fun). 

在这种情况下Fun确实应该可以在远程端加载。

匿名函数

Fun = fun() -> io:format("My node is ~p~n", [node()]) end,
erlang:spawn(Node, Fun). 

他们是也可调用.

总结

虽然功能隐含了一些限制,可以远程扩展,但这种形式仍然合适并且可以放弃,因为那样第二种情况就变得不可能了

Also

一些误解可能由此而来article

事实上,如果你跑erlang:fun_info对于匿名函数,你会看到,它以 AST 的形式提供实现

(b@lol4t0-home)21> rp(erlang:fun_info(fun() -> io:format("My node is ~p~n", [node()]) end)). 
[{pid,<0.96.0>},
 {module,erl_eval},
 {new_index,20},
 {new_uniq,<<99,62,121,82,122,95,246,237,63,72,118,40,4,
             25,16,50>>},
 {index,20},
 {uniq,52032458},
 {name,'-expr/5-fun-3-'},
 {arity,0},
 {env,[{[],
        {eval,#Fun<shell.21.31625193>},
        {value,#Fun<shell.5.31625193>},
        [{clause,1,[],[],
                 [{call,1,
                        {remote,1,{atom,1,io},{atom,1,format}},
                        [{string,1,"My node is ~p~n"},
                         {cons,1,{call,1,{atom,1,node},[]},{nil,1}}]}]}]}]},
 {type,local}]
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如果 Node 必须具有与客户端节点相同的可加载模块,那么 Erlang 上的 Spawn(Node, Fun) 有何意义? 的相关文章

  • 如何在 erlang 中格式化包含整数的平面字符串?

    在erlang中 我想格式化一个包含整数的字符串 并且我希望结果被展平 但我明白了 io lib format sdfsdf B 12312 115 100 102 115 100 102 32 12312 我可以使用下面的代码获得所需的结
  • 具有大状态的 erlang gen_server

    我有一个包含数千个条目的特里树 用元组和列表实现 我想支持并发读取 数据的内存占用量在 10 20 MB 范围内 特里树被构建一次 之后只读 维护状态并为客户端提供并发访问的推荐方法是什么 这是我尝试过的 1 创建一个gen server
  • Erlang 中的 Apple 推送通知(或 Ruby 中的改进?)

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

    我开始学习 Erlang 所以我尝试写 hello world 并发编程 IRC 机器人 我已经使用 Erlang 编写了一个 没有任何 OTP 细节 管理程序 应用程序等行为 我希望使用 OTP 原则重写它 但不幸的是我无法找出使用 OT
  • Erlang 中事件流(又名 CEP)的实时关联/分析有什么框架吗?

    想要分析具有某些特征 例如公共来源 的事件流 并在给定的时间窗口内 最终将这些多个事件关联起来并从中得出一些推论 最后启动一些操作 我对复杂事件处理 CEP 的有限了解告诉我 它是此类事情的理想选择 然而 在我迄今为止的研究中 我发现人们将
  • Elixir - 递归列表值的总和

    只是尝试对列表值进行简单求和 defmodule Mth do def sum list do 0 end def sum list H T do H sum list T end end IO puts Mth sum list 1 2
  • 对列表中的 Erlang 记录进行排序?

    我在erlang中有一条记录 record myrec id 0 price 0 quantity 0 然后 我有一个记录列表 我想按 id 和价格按降序和升序排序 其中价格是第一个键 如果两个记录具有相同的价格 我想按 id 对它们进行排
  • 在 Erlang 中使用完全限定的函数调用?

    我刚刚学习了如何在 Erlang 中升级模块 并且我知道只有使用完全限定名称的函数调用 例如module function 重新链接 到加载到 VM 中的当前版本 但未指定模块名称的函数调用不会 重新链接 到当前版本 而是继续使用旧版本 关
  • ejabberd如何编译新模块

    Here http www ejabberd im node 2872我找到了代码 erlc I ejabberd 2 1 13 lib ejabberd 2 1 13 include pa ejabberd 2 1 13 lib ejab
  • Erlang - 导入 GPG 公钥

    我正在尝试在 Erlang 中做一些与公钥相关的事情 它们要求我跟踪公钥 根据这一页 http www erlang org doc apps public key using public key html id61611 我应该能够通过
  • 以数据为中心的应用程序模型和面向对象的应用程序模型有什么区别?

    什么是以数据为中心的应用程序 与面向对象的应用程序模型有什么区别 这两个概念有些正交 以数据为中心的应用程序 http en wikipedia org wiki Database centric architecture数据库起着关键作用
  • 分布式版本控制系统[关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 我想和我的程序员同事一起实现分布式版本控制系统 他们分散在周围 全部使用不同的 IDE 或不使用 IDE 也使用不同的操作系统 我对整个场
  • 在erlang中打印数字的每个数字的问题

    我正在尝试编写一个程序 该程序将读入一个数字 然后将该数字的每个数字输出到列表中 然而 在我尝试使用数字 8 和 9 之前 大多数事情看起来都很好 该程序仅输出 b t反而 如果输入的数字包含8或9 同时还有其他数字 例如283 就可以正常
  • Erlang 如何并发处理访问邮箱

    关于如何使用erlang邮箱的信息有很多 但很少找到一篇论文或文档描述erlang如何在VM内部同时实际访问邮箱 据我了解 Erlang VM 必须执行锁定或 CAS 操作以确保消息完整性 erlang幕后有没有什么精巧的方法 我假设您所说
  • Erlang 更好地支持哪种数据库(SQL)?

    你建议我在 Erlang 中使用什么 MySQL 还是 Postgres 哪个数据库有更好 更成熟 更稳定 更快 的 Erlang 驱动程序 The Erlang ODBC 接口 http erlang org doc apps odbc
  • 如何使用 ibrowse 将附件上传到 CouchDB 中的文档?

    我已经使用curl上传图像文件Penguins jpg 例如 C curl gt curl vX PUT H Content Type image jpeg http localhost 5984 DBNAME DOCID Penguins
  • Erlang:如何将小数转换为填充零的十六进制字符串

    我想在 Erlang 中将 42 基数 10 转换为 000002A 基数 16 我在网上找到了一些提示 io format 8 0B n 42 gt 00000042 And io format 16B n 42 gt 2A 但我似乎无法
  • 停止 Erlang 守护进程

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

    When trying to run Elixir Phoenix Web Application using PostgreSQL Database hosted 3rd party Database as a Service Azure
  • Erlang 中的接受器池和负载平衡?

    From http www erlang org doc man gen tcp html accept 1 http www erlang org doc man gen tcp html accept 1 值得注意的是 accept 调

随机推荐

  • InAPPBilling 中 IABHelper 和 IInAppBillingService 的区别

    在 InAppBilling V3 的 google 文档中 他们使用 IInAppBillingService 进行购买 检查以下网址 http developer android com google play billing bill
  • 通过 PHP 呈现纯文本

    出于某种原因 我想通过 PHP 脚本提供 robots txt 我已经设置了 apache 以便 robots txt 文件请求 实际上是所有文件请求 到达单个 PHP 脚本 我用来渲染 robots txt 的代码是 echo User
  • iOS:CellForRowAtIndexPath 单元格变得混乱

    首先要说我已经看到了这些问题 iOS UITableView 滚动太快时会混合数据 自定义 UITableViewCell 滚动后混合 在 UITableView 中滚动后项目混合在一起 第一个和最后一个似乎与我的问题非常相关 但是我相当确
  • 我可以将哪些参数传递给 dbConnect?

    要连接到 SQLite 数据库 相当简单 传递驱动程序和 SQLite 文件的路径 对于他人DBI 兼容的数据库后端 PostgreSQL MySQL 等 您可以传递给什么dbConnect不明显 也没有很好的记录 我如何知道我可以传递给什
  • 组合字典时Dask延迟未指定长度的对象不可迭代错误

    我正在尝试使用 dask 并行构建字典 但是我遇到了TypeError Delayed objects of unspecified length are not iterable 我正在尝试计算add subtract and multi
  • 值得删除大型代码库中未使用的导入吗?

    运行检查未使用的脚本后imports例如import XYZ from dir XYZ jsx where XYZ从未使用过 我遇到过大约 300 个存在此类问题的文件 大多数这些文件都缺少类似的东西 例如Proptypes对于反应 imp
  • 将项目从一个列表转移到另一个列表的更简洁的方法

    我一直在编写一款文本冒险游戏 有时我需要从一个列表中获取由用户输入给出的项目并将其移动到另一个列表 具体来说 当您知道项目名称时 除了以下内容之外 还有什么方法可以获取项目的索引 list one item one item two ind
  • 为什么赋予 RegExp 构造函数的字符串需要双重转义?

    在下面的正则表达式中 s表示空格字符 我想象正则表达式解析器正在遍历字符串并看到 并且知道下一个字符是特殊的 但情况并非如此 因为需要双重转义 为什么是这样 var res new RegExp s foo test moo 有没有具体的例
  • 如何使用数据库中的数据填充 JavaFX ChoiceBox?

    private void initialize loadPersistenceContext List
  • ReactJS - 需要单击两次才能设置状态并运行函数

    以下是我的 React 组件中的代码摘要 getInitialState function return link onClick1 function this setState link Link1 this otherFunction
  • 如何验证数组?

    我正在尝试使用敲除验证库验证对象数组 对我来说 如何为一组可观察值形成验证组并不简单 我设法让它发挥作用的唯一方法是这样的 包含 JSFIDLE var Note function var self this self name ko ob
  • 将 MySQL UTF8 迁移到 UTF8MB4 问题和疑问

    我正在尝试将 UTF8 MySQL 5 5 30 数据库转换为 UTF8MB4 我看过这篇文章https mathiasbynens be notes mysql utf8mb4但有一些问题 我已经做了这些 ALTER DATABASE d
  • 在 Java 中单击按钮在 JPanel 中画一条线

    我想在 JPanel 中画一条线 这是我的 GUI 我希望 JPanel 中有一条白色的线 我找到了很多例子 但问题是如何使用它 在许多示例中 他们总是在从 JPanel 扩展的 JFrame 中绘制 我想将面板添加到框架中 并添加一些按钮
  • 使用 Oracle PL/SQL 中的 Web 服务

    如今 我们的应用程序正在与许多 Web 服务进行交互 我们有自己的包 几年前有人使用 UTL HTTP 编写了它 它通常可以工作 但需要对 SOAP 信封进行一些硬编码才能与某些系统一起工作 我想让它更通用 但缺乏经验来知道我必须处理多少场
  • Twitter Bootstraps config.json - 它有什么作用?

    我正在尝试找到一种方法来仅包含特定的引导程序部分 css 或 js 但到目前为止 我只是写下了我正在使用的内容的列表 然后在其定制器页面上勾选这些框 然而我注意到一个config jsonzip 文件中下载的文件 它有什么作用 我目前使用b
  • 为 Primefaces 多选数据表实现动态上下文菜单

    我有一个带有上下文菜单的分页 PrimeFaces 数据表 我希望实现多选 其中上下文菜单中的菜单项将取决于所选项目的数量 因为某些操作仅在仅选择一个项目时才可用 其他选择一项或多项后才有效 我的第一个想法是使用各个菜单项的 渲染 选项 该
  • shell 脚本的漂亮打印

    我正在寻找类似的东西indent但对于 bash 脚本 仅控制台 无着色等 你知道其中之一吗 Vim 可以缩进 bash 脚本 但在缩进之前不要重新格式化它们 备份你的bash脚本 用vim打开它 输入gg GZZ和缩进将被纠正 不耐烦的人
  • 在 Excel 2007 中编写 VBA 以在 Excel 2003 中使用

    我所在的开发人员已经更新到 Excel 2007 但大多数用户还没有 我正在为需要包含一些 vba 代码的用户构建一个电子表格模板 xlt 我想知道在 2007 年而不是 2003 年构建此模板时可能会遇到哪些问题 我无法使用装有 Exce
  • 如何使用 python 运行 Hello world C++ 代码

    我想知道如何创建运行 C 代码的 python 脚本 我确实找到了一些关于子进程模块的讨论 但它用于运行命令 我确实找到了一些关于 Boost 和 Swig 的讨论 但作为初学者我不明白如何使用它们 测试子流程 import subproc
  • 如果 Node 必须具有与客户端节点相同的可加载模块,那么 Erlang 上的 Spawn(Node, Fun) 有何意义?

    为什么要制造出您正在向远程节点发送 Fun 以在新进程中执行的错觉 无论如何 如果客户端节点必须具有可加载的相同模块 并且 Fun 定义为服务器节点 为什么不仅是spawn Node M F A 这清楚地表明您正在发送函数调用的定义 而不是