我现在已经使用了mnesia一段时间了。我必须承认,我觉得我并不完全理解mnesia:wait_for_tables/2的概念。引用下面的文档说明了这一点:
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.
"Some applications"
的上下文没有很好地扩展,这就是我的问题所在。
RAM (ram_copies)
个表,那么我的代码中不需要这个方法。现在,我是正确的,如果我只有disc_only_copies
,我也不需要这个功能。disc_copies
类型的表,为什么完全在Disc上运行或完全在RAM中运行的应用程序需要等待并加载表?
问题:
帮助并检查我的想法1,2和3.通常,只有在处理mnesia表类型时才需要此函数:disc_copies
因为此类型具有与光盘和RAM上的数据复制有关吗?
如果我的表格都是碎片化的(我总是为每个片段调用此方法以确保mnesia为我的应用程序做好准备),我有吗?调用每个片段的方法?是ATOMIC或Transactional的方法,如果我在mnesia事务中调用它(意味着如果我单独指定基表,mnesia将自动加载所有表片段)?我的片段的表格类型对这个函数也很重要吗?
答案 0 :(得分:3)
启动mnesia时,mnesia会将所有应加载的表排队 来自光盘或网络。
mnesia:wait_for_tables / 2为您提供了一个同步点,因此您不必这样做 如果表格已准备就绪,则进行轮询。
如果您不使用光盘而没有复制,(即模式在启动时始终为空) 你不需要使用wait_for_tables。