问题标签 [erlang-otp]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
erlang - 在超时前结束进程
似乎 erlang 进程将保持活动状态,直到 5 秒默认超时,即使它已经完成了它的工作。
我有 gen_server 调用向窗口 CLI 发出命令,该命令可以在不到 1 秒的时间内完成,但在我看到操作结果之前进程等待 5 秒。这是怎么回事?是否与超时有关,或者可能是其他原因。
编辑此调用在 5 秒内不执行任何操作(默认超时!)
erlang - 使用 gen_server 封装一个 mnesia 表?
我有一个用 Erlang 制作的服务器应用程序。在其中我有一个记忆表,用于存储有关照片的一些信息。本着“一切都是过程”的精神,我决定将该表包装在一个gen_server
模块中,以便该
gen_server
模块是唯一直接访问该表的模块。通过向该进程(具有注册名称)发送消息来完成向该表的查询和添加信息。这个想法是会有几个客户端进程从该表中查询信息。
这工作得很好,但该gen_server
模块没有状态。它所需的一切都存储在 mnesia 表中。所以,我想知道 agen_server
是否可能不是封装该表的最佳模型?
我是否应该不让它成为一个过程,而只是通过该模块中的函数封装表格?如果该模块中出现错误,这将导致调用进程崩溃,我认为这可能会更好,因为它只会影响单个客户端,而不是现在,当它会导致
gen_server
进程崩溃时,让每个人都无法访问表(直到主管重新启动它)。
非常感谢任何输入。
erlang - 如何使用 ssl 加密构建非阻塞 TCP 服务器
trapexit.org 上的非阻塞 TCP 服务器解释了如何基于 tcp_gen 构建服务器,但我想修改此示例并使其与 ssl 一起使用。现在我完全不知道如何更换
list - Erlang 列表:index_of/2 函数?
我正在寻找一个 Erlang 库函数,它将返回列表中特定元素的索引。
因此,如果
将返回 1 等,就像java.util.List
'indexOf()
方法一样。
Erlang标准库中是否存在这种方法?我尝试查看列表模块,但没有运气。还是我自己写?
erlang - Erlang gen_server vs 无状态模块
我最近完成了乔的书,非常喜欢它。从那时起,我开始使用 erlang 编写软实时应用程序,我不得不说我对 gen_server 的使用有点困惑。
我什么时候应该使用 gen_server 而不是简单的无状态模块?我将无状态模块定义如下: - 一个将其状态作为参数的模块(很像 ETS/DETS),而不是将其保留在内部(如 gen_server)
比如说发票管理器类型模块,它应该初始化并返回我随后传递给它的状态吗?SomeState = InvoiceManager:Init(), SomeState = InvoiceManager:AddInvoice(SomeState, AnInvoiceFoo)。
假设我需要发票管理器状态的多个实例(比如我的应用程序管理多个公司,每个公司都有自己的发票),如果他们每个人都有一个带有内部状态的 gen_server 来管理他们的发票,或者更适合简单地拥有无状态模块多于?
两者之间的界线在哪里?
(注意上面的发票管理例子就是这样,一个例子来说明我的问题)
erlang - erlang 中的事件管理器进程。命名进程还是 Pid?
我有事件管理器进程将事件分派给订阅者(例如 http_session_created、http_sesssion_destroyed)。如果使用Pid而不是命名进程,我必须将它放入函数中以使用事件管理器进行操作,但如果使用命名进程,代码会更清晰。
哪个变体是正确的?
谢谢!
erlang - 在 Erlang 的 gen_server 中实现代码交换
我希望在 gen_server 上使用 Erlang 的热代码交换功能,这样我就不必重新启动它。我该怎么做?当我搜索时,我只能找到一篇提到我需要使用gen_server:code_change
回调的文章。
但是,我真的找不到任何关于如何使用它的文档/示例。非常感谢任何帮助或资源链接!
erlang - 使用未注册的、动态创建的 gen_server 的示例?
使用 OTP 应用程序中命名的 gen_servers 的教程比比皆是。但是,我一直找不到动态生成未注册(未命名)服务器的好例子。有人可以指出一个好的,简单的例子吗?不是 ejabberd,例如,我试图理解的核心思想有很多令人困惑的地方。
谢谢。
erlang - 如果 gen_fsm 没有收到消息,则允许它超时
通常,如果我想要 Erlang 进程超时,我会使用以下构造:
OTP 服务器中是否有类似的机制,例如 gen_fsm?我将为我的应用程序的每个活动会话生成 gen_fsm,并且如果在收到消息后超过不活动的超时值,我希望它们退出。
如果需要,我可以编写自己的自定义流程,但如果可能,我更愿意使用 gen_fsm。