Erlang 等等,我真的明白了吗?

Erlang 等等,我真的明白了吗?,erlang,mnesia,Erlang,Mnesia,我已经用了一段时间了。我必须承认,我觉得我并不完全理解这个概念。下面引用的文档说明了这一点: Some applications need to wait for certain tables to be accessible in order to douseful work. mnesia:wait_for_tables/2 hangs until all tables in the Tab List areaccessible, or until timeout is reached. 一

我已经用了一段时间了。我必须承认,我觉得我并不完全理解这个概念。下面引用的文档说明了这一点: Some applications need to wait for certain tables to be accessible in order to do
useful work. mnesia:wait_for_tables/2 hangs until all tables in the Tab List are
accessible, or until timeout is reached. 一些应用程序需要等待某些表被访问,才能执行有用的工作。mnesia:wait_for_tables/2挂起,直到选项卡列表中的所有表都可访问,或者直到达到超时。 现在,对于我开发的所有应用程序,我必须在启动后端时调用它。在上面的文档中,
“某些应用程序”
的上下文没有得到很好的扩展,这就是我的问题所在。

以下是我的想法:
1.此方法中的等待意味着我们正在将mnesia表从光盘加载到RAM(如果是光盘拷贝)
2.我个人认为,如果我的应用程序只包含
RAM(RAM\u拷贝)
表,那么我的代码中就不需要这个方法。现在,我正确地认为,如果我只有
disc\u only\u copies
,我也不需要这个功能。此外,当我从网络加载mnesia表时,特别是当我的表被复制时,我需要此功能,因此我的应用程序需要等待mnesia启动,以使这些表准备就绪。但这仍然只适用于类型为
disc\u copies
的表,因为为什么完全在光盘上或完全在RAM中运行的应用程序需要等待并加载表


问题:
帮助并检查我的想法1、2和3。一般来说,只有在处理mnesia表类型时才需要此函数:
disc\u copies
,因为此类型与磁盘和RAM上的数据复制有关?

如果我的表都是分段的,(我总是为每个分段调用此方法,以确保mnesia为我的应用做好准备),我必须调用每个片段的方法吗?如果我在mnesia事务中调用该方法,该方法是原子的还是事务的(这意味着如果我单独指定基表,mnesia将自动加载所有表片段)?my fragments的表类型是否也与此函数有关?

启动mnesia时,mnesia只是将所有应加载的表排队 从光盘或网络

mnesia:wait_for_tables/2为您提供了一个同步点,因此您不必这样做 轮询表是否准备好使用

如果不使用光盘且没有复制(即,启动期间架构始终为空) 您不需要使用等待表