ソケットから来るいくつかのバイナリを、後で gen_server 呼び出しで使用するアトムに変換したいと思います。VM を新しい (そしておそらく無効なアトム) であふれさせたくないので、以下を使用します。
binary_to_existing_atom(バイナリ、エンコーディング)
さて、変換が有効になるように、システムの起動時に有効なアトムをどのように (またはどこで) 宣言する必要がありますか?
ソケットから来るいくつかのバイナリを、後で gen_server 呼び出しで使用するアトムに変換したいと思います。VM を新しい (そしておそらく無効なアトム) であふれさせたくないので、以下を使用します。
binary_to_existing_atom(バイナリ、エンコーディング)
さて、変換が有効になるように、システムの起動時に有効なアトムをどのように (またはどこで) 宣言する必要がありますか?
アトムがロードされたモジュールで使用されていれば十分です。たとえば、case
式やその他の比較で一致します。
を呼び出した場所とは別のモジュールで比較が行われるbinary_to_existing_atom
場合は、変換を行うまでにそのモジュールがロードされていることを確認する必要があります。リリースをビルドして「組み込み」モードで実行すると、起動時にすべてのモジュールがロードされます。それ以外の場合、モジュールは呼び出されたときにロードされます。そのため、問題のモジュールが、たとえばアプリケーションの監視ツリーによって開始された gen_server である場合は問題ありません。