为什么要为不是 named_table 的 ETS 表分配名称?

问题描述

为通过 ets:new/2 创建的没有 named_table 标志的 ETS 表提供名称有什么意义?我在那里放的东西有什么不同吗?

解决方法

在没有named_table标志的情况下创建ETS表:

  • 对于不同的表,您可以多次使用相同的名称。
  • 您不能使用名称访问这些表,您必须使用表标识符(如果尝试,您会收到异常错误,如果您在 ETS 所有者进程中执行此操作,可能会破坏该表)。
  • 在观察者的表查看器中,显示了 not named_table 的名称,因此无论如何给出一个有意义的名称会很有趣。

此功能很有用,例如,当代码生成相同的进程或一组进程、并行运行并使用每个进程自己的 ETS 表时。