ホームページ  >  記事  >  バックエンド開発  >  アーランとゴーランの違い

アーランとゴーランの違い

(*-*)浩
(*-*)浩オリジナル
2019-12-02 15:49:154950ブラウズ

アーランとゴーランの違い

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 サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。