プロセスの状態をetsテーブルに保存すると、クラッシュの合間に状態を維持するのに役立ちます。私は通常、プロセスに永続的な名前を付けるためにグローバルレジストリを使用します。(Player 200は{player、200}として登録されます。)ローカルレジストリを使用することはお勧めしません。アトムを使用する必要があり、子プロセスが多数ある場合は、アトムの制限を急いでかみ砕くことができるためです。それらを動的に作成します(player_200、player_201など)
ただし、子の状態をetsテーブルに保存することには、独自のリスクと問題があります。エラーが発生してからetsテーブルに保存されるまでの間に子がクラッシュした場合は、問題ないはずです。ただし、子がガベージ状態を保存する原因となるデータを処理し、次のメッセージの処理時にクラッシュした場合はどうなりますか?プロセスを再開し、etsテーブルから不良状態をロードして、次のメッセージで再度クラッシュします。これに対処する方法は確かにありますが、それは可能性があることを認識し、回避する必要があります。
Erlangはetsテーブルをすべてのプロセスに配布する問題を隠しますが、CPUと潜在的な競合を犠牲にしてそうします。etsテーブルに多くの変更をプッシュする場合は、パフォーマンスでそれを支払うことになります。
あなたの子供が墜落しているなら、とにかく、あなたは彼らが誤った状態を取り除く方法を探しているべきではありませんか?私は通常、原因を突き止めて修正する必要があるものとして、プロセスのクラッシュを取ります。?