Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/kubernetes/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Erlang 如果我的状态不变,是否需要OTP?_Erlang - Fatal编程技术网

Erlang 如果我的状态不变,是否需要OTP?

Erlang 如果我的状态不变,是否需要OTP?,erlang,Erlang,我有一个erlang项目,它的状态完全是只读的,由ets表和。代码启动时,构建表需要几秒钟的时间 打包此文件以便其他应用程序使用的最佳方式是什么? 需要考虑的其他事项: 没有数据争用问题或状态变化,因此似乎不需要gen_服务器 我喜欢能够调用应用程序:start/1,让事情“正常工作” 某些进程应该拥有ets表。似乎我不应该把这留给客户机代码 上述情况使我认为我应该创建一个应用程序,并从主管的init/1函数调用设置代码,但我不确定这是否是一种愚蠢的方法。将其包装为标准OTP应用程序gen\

我有一个erlang项目,它的状态完全是只读的,由ets表和。代码启动时,构建表需要几秒钟的时间

打包此文件以便其他应用程序使用的最佳方式是什么?

需要考虑的其他事项:

  • 没有数据争用问题或状态变化,因此似乎不需要gen_服务器
  • 我喜欢能够调用
    应用程序:start/1
    ,让事情“正常工作”
  • 某些进程应该拥有ets表。似乎我不应该把这留给客户机代码

上述情况使我认为我应该创建一个应用程序,并从主管的
init/1
函数调用设置代码,但我不确定这是否是一种愚蠢的方法。

将其包装为标准OTP应用程序
gen\u server
不是关于维护状态,而是关于拥有一个能够处理请求的服务器(出于某种原因,它没有被称为
gen\u state
)。创建一个OTP应用程序,让人们以与其他任何应用程序相同的方式使用它。

如果模块完全是静态的,则在这样的应用程序中不需要任何进程。如果您在OTP中实施
应用程序
行为,您应该能够将ETS表直接连接到主应用程序进程(在应用程序
启动/2
回调中启动表)。这样,您将拥有一个最小的流程模型,允许您跳过
主管
和任何
gen_服务器

您当然应该使用OTP,但这并不意味着您绝对必须有一个
主管
genu服务器


用于查看应用程序的流程层次结构。

您能想到一个不应该只是常规模块的无状态
genu服务器的示例吗?在过去,我一直认为状态是使用行为的先决条件。我喜欢它!谢谢你的意见。:)我刚开始这么做,意识到开始回调需要返回
{ok,Pid}
。通常
Pid
引用顶级主管流程。如果在我的例子中不存在这种情况,我是否应该返回
{ok,self()}
?是的,这是运行无管理应用程序时的做法。