【发布时间】:2010-12-09 11:53:14
【问题描述】:
我最近完成了乔的书,非常喜欢。 从那以后我开始用 erlang 编写软实时应用程序,我不得不说我对 gen_server 的使用有点困惑。
什么时候应该使用 gen_server 而不是简单的无状态模块? 我定义了一个无状态模块如下: - 一个将其状态作为参数的模块(很像 ETS/DETS),而不是将其保留在内部(如 gen_server)
对于发票管理器类型的模块,它是否应该初始化并返回我随后传递给它的状态? SomeState = InvoiceManager:Init(), SomeState = InvoiceManager:AddInvoice(SomeState, AnInvoiceFoo)。
假设我需要发票管理器状态的多个实例(例如,我的应用程序管理多个公司,每个公司都有自己的发票),如果他们每个人都有一个带有内部状态的 gen_server 来管理他们的发票,或者更适合简单地拥有上面的无状态模块?
两者之间的界限在哪里?
(注意上面的发票管理示例就是这样,一个例子来说明我的问题)
【问题讨论】:
-
请注意,代码示例中的原子(模块和函数名称)应以非大写字母开头。
标签: erlang erlang-otp