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

golangとerlangの違い

(*-*)浩
(*-*)浩オリジナル
2019-12-13 11:52:153850ブラウズ

golangとerlangの違い

Erlang 最初のバージョンは 1991 年に Ericsson によってユーザーに提供されました。継続的な改善、改良、開発を経て、1996 年に 2008 年に、エリクソンは、すべての Erlang ユーザーに非常に実用的で安定した OTP ソフトウェア ライブラリを提供し、1998 年に最初のオープン ソース バージョンをリリースしました。 (推奨学習: go)

現在、Erlang がサポートするオペレーティング システムには、linux、windows、unix などが含まれます。特に、Erlang が主流のオペレーティング システムに適していると言えます。マルチコアのサポート 現在のマルチコア CPU に非常に適しており、分散特性により、現在のさまざまな分散クラスターとうまく統合することもできます。

Go 言語は、プログラミング言語設計のもう 1 つの試みであり、C 系言語を大幅に改良したものです。基盤となるオペレーティング システムにアクセスできるだけでなく、強力なネットワーク プログラミングと、同時プログラミングのサポート。 Go 言語には多くの用途があり、ネットワーク プログラミング、システム プログラミング、同時プログラミング、分散プログラミングに使用できます。

Go 言語の導入は、アプリケーションのパフォーマンスを損なうことなくコードの複雑さを軽減することを目的としており、「シンプルなデプロイメント、優れた同時実行性、優れた言語設計、優れた実行パフォーマンス」という利点を備えています。 IT企業はプロジェクト開発にGo言語を採用しています。

Erlang と golang の違い:

1 つ目はロックに対する態度が異なり、2 つ目は非同期 IO に対する態度が異なり、3 つ目は非同期 IO に対する態度が異なります。は異なるメッセージ メカニズムを持っています。 Erlang はロックを非常に嫌っており、不変変数によってロックを大幅に回避できると考えています。

Golang の観点では、ロックには大きな負担がありますが、ロックは基本的に避けられないものであり、誰かが状態を共有し、お互いにプリエンプトして状態を変更すると、ロックが存在する必要があります。

Erlang サーバーは単一プロセスであり、論理的な同時実行性はありません。プロセスは実行本体であるため、Erlang サーバーは golang サーバーとは異なります。golang サーバーはマルチプロセス (ゴルーチン) です。これらは一緒になってサーバーを形成します。各リクエストは独立したプロセス (ゴルーチン) を作成します。

しかし、Erlang は異なります。サーバーは単一のプロセスです。すべての同時リクエストはプロセス メールボックスに入ります。その後、サーバーはプロセス メールボックスからメール (リクエストのコンテンツ) を取得して処理します。Erlang のサーバーは、同時実行性があるため、ロックは必要ありません。

Erlang の高い同時実行性の実装。まず、各 Erlang 物理サーバーには多数のサーバーがあり、各サーバーは相互に干渉せず、同時実行できます。 2 つ目は、単一サーバーが非同期 IO を使用して高い同時実行性を実現していることです。

Go は非同期 IO コードがあってはいけないと考えていますが、Erlang は非同期 IO と軽量プロセス モデルを組み合わせたものです。

Golang の同時実行性のサポート、まず値の戻り、golang で最も重要なことは実行コストを削減することです。golang の最小スタックは 4K です。

2 番目: 実行可能本体を言語に組み込まれた標準機能として使用します (golang には標準化されたコード スタイルが 1 つだけあります)。 Go の同時実行モデルは最も古い同時実行モデルであり、ルーチン、アトミック操作、ミューテックス、同期、メッセージ、同期 IO が含まれています。

以上がgolangとerlangの違いの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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