Erlangは、アクター間でメッセージをやりとりする際に、並行処理モデルとして動作します。Erlang Style Concurrencyと「状態を共有する」方法は?
には、のアイテムを販売する3人の俳優がいるとします。アイテムの合計数は7です。彼らはどのようにexcactly 7アイテムを販売していますか?彼らはどのように自分自身を調整するのですか?利用可能なアイテムの数が1つで、「購入」メッセージ(インベントリアクタ)に作用する1人の俳優を持つことができます。これはSPOFです。
ロックの代わりに並行性のためにメッセージキューを使用すると、Javaのような他の言語でも並行性が維持されます。
(アムダールボトルネックのないベスト)
ああ、優秀です。具体的な答え、ツイッターの人々はちょうど侮辱しました。しかし、Mnesiaテーブルのような中央リソースは "Erlang並行性"であると思いますが、これは共有リソースのように見えます(状態を共有するためにデータベースを使用するようなもの)? (しかしErlangのプロとスーパーバイザーツリーの一部である) –
あまりにも、Erlangはプロセス、テーブル、またはデータベースの形式で共有リソースを知っています。しかし、それはそれらを簡単に使用して保存します。メッセージキューは同期の問題を処理し、再起動の監視を心配し、Mnesiaは異なるノード上のレプリケーションを認識します。気を付けなければならないが、助けになる。 – Mue
テーブルを管理するプロセスがなくても、メネシアがやっていることがあるからです。トランザクションを使用する場合は、テーブルがアトミックに更新されることを確認します。 –