Erlang と golang の違い:
前者はロックに対する態度が異なり、後者はロックに対する態度が異なります。非同期 IO、3 番目のメッセージ メカニズムが異なります。 Erlang はロックを非常に嫌っており、不変変数によってロックを大幅に回避できると考えています。
Golang の観点では、ロックには大きな負担がありますが、ロックは基本的に避けられないものであり、誰かが状態を共有し、お互いにプリエンプトして状態を変更すると、ロックが存在する必要があります。 。 Golangのサーバーは異なります。Golangのサーバーは、複数のプロセス(Goroutine)で構成されるサーバーです。各リクエストは独立したプロセス (ゴルーチン) を作成します。
しかし、Erlang は異なります。サーバーは単一のプロセスです。すべての同時リクエストはプロセス メールボックスに入ります。その後、サーバーはプロセス メールボックスからメール (リクエストのコンテンツ) を取得して処理します。Erlang のサーバーは、同時実行性があるため、ロックは必要ありません。Erlang の高同時実行性の実装:
第一: 各 Erlang 物理サーバーには多数のサーバーがあり、各サーバーは互いに干渉せず、同時実行できます。
2 つ目は、単一サーバーが非同期 IO を使用して高い同時実行性を実現していることです。 Go は非同期 IO コードがあってはいけないと考えていますが、Erlang は非同期 IO と軽量プロセス モデルを組み合わせたものです。Golang の同時実行性のサポート:
最初: 値の戻り。golang にとって最も重要なことは、実行コストを削減することです。golang の最小スタックは 4K です。
2 番目: 実行可能本体を言語に組み込まれた標準機能として使用します (golang には標準化されたコード スタイルが 1 つだけあります)。 Go の同時実行モデルは最も古い同時実行モデルであり、ルーチン、アトミック操作、ミューテックス、同期、メッセージ、同期 IO が含まれています。以上がアーランとゴーランの違いの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。