Erlangが並行/並列化/分散の状況で実行するように特別に開発されたという事実を除いて、Erlangがこれを可能にする主な2つの手法は次のとおりです。
副作用なし:
つまり、実行するデータの一部を関数に与えても、非常に厳密な場合を除いて、システム/実行プロセスの他の部分に影響を与えません。つまり、関数を一度に300回同時に実行しても、300回の関数の実行が他の関数に影響することはありません。
副作用がないことを保証するための実装手法は「不変性」と呼ばれ、大まかに言うと、変更(変更)できない場合があります。つまり、変数を作成するとすぐに、その変数の値は変更されない可能性があります。Erlangはこの動作を「単一割り当て」で実装しているため、変数に値を割り当てた後、再度値を割り当てることはできません。
X = 1.
X = 2. // This is not a valid operation
これにより、コードがXの値を誤って変更して競合状態を引き起こさないことが保証されるため、本質的にスレッドセーフであり、同時使用は簡単になります。これはソフトウェア言語間では非常に一般的ではない動作であり、Erlangが並行実行に非常に適している最大の方法です。
俳優モデル:
これは、開発者にとって並行処理の実装と管理を非常に簡単にすることがわかっているモデリングの特定の方法です。ウィキペディアから直接(http://en.wikipedia.org/wiki/Actor_model):
Actorモデルは、すべてが俳優であるという哲学を採用しています。これは、一部のオブジェクト指向プログラミング言語で使用されるすべてのオブジェクト哲学に似ていますが、アクターモデルは本質的に同時であるのに対し、オブジェクト指向ソフトウェアは通常順次実行されるという点が異なります。アクターは、受信したメッセージに応答して、同時に実行できる計算エンティティです。有限数のメッセージを他のアクターに送信します。有限数の新しいアクターを作成します。受信する次のメッセージに使用する動作を指定します。上記のアクションに想定されるシーケンスはなく、それらは並行して実行できます。送信者が送信された通信から分離することは、非同期通信と制御構造をメッセージの受け渡しのパターンとして可能にするActorモデルの根本的な進歩でした。