使用binary_to_existing_atom(二进制,编码)

use*_*836 3 erlang

我想将一些来自套接字的二进制文件转换为稍后将在gen_server调用中使用的原子.由于我不想用新的(可能是无效的原子)来泛滥VM,我使用:

binary_to_existing_atom(二进制,编码)

现在,我应该如何(或更好地在哪里)在系统启动时声明有效原子,以便转换有效?

leg*_*cia 6

原子用于任何加载的模块就足够了,例如在case表达式或其他比较中匹配.

如果比较发生在与您调用的模块不同的模块中binary_to_existing_atom,则需要确保在转换时加载该模块.如果您构建一个版本并以"嵌入"模式运行它,那么所有模块都将在启动时加载.否则,模块将在被调用时被加载,因此如果有问题的模块是例如由应用程序的监督树启动的gen_server,那么你就没事了.