Go における同時実行と並列処理の違いは何ですか
同時実行と並列処理の違い: 1. 同時実行とは、異なる時点で処理するためにタスクをプロセッサに割り当てることを意味し、並列処理とは、各タスクを各プロセッサに割り当てて独立して完了させることを意味します。 2. 同時実行とは、同じ時点で処理することを意味します。同時にタスクは実行されませんが、並行して、同じ時点で、タスクは同時に実行される必要があります。
このチュートリアルの動作環境: Windows 7 システム、GO バージョン 1.18、Dell G3 コンピューター。
並行性の概念を理解する場合、常に並列性という別の概念が関係します。同時実行と並列処理の違いを理解しましょう。
同時実行性 : さまざまな時点で処理するためにプロセッサーにタスクを処理します。同じ時点で、タスクが同時に実行されることはありません。
並列処理: 各タスクを各プロセッサに割り当てて、独立して完了します。同じ時点で、タスクは同時に実行されている必要があります。
同時実行性は並列性ではありません。並列処理とは、異なるコードを異なる物理プロセッサ上で同時に実行することです。並列処理の鍵は、同時に多くのことを実行することであり、並行性とは、多くのことを同時に管理することを指します。これらのことは、他のことを行うために一時停止される前に、途中でのみ実行される場合があります。
多くの場合、並列処理よりも同時実行の方が優れています。これは、オペレーティング システムとハードウェアの合計リソースは通常非常に小さいためですが、システムが同時に多くのことを実行できるようにすることができるためです。 「より少ないリソースでより多くのことを行う」というこの哲学は、Go 言語の設計を導く哲学でもあります。
ゴルーチンを並列化したい場合は、複数の論理プロセッサを使用する必要があります。論理プロセッサが複数ある場合、スケジューラはゴルーチンを各論理プロセッサに均等に分配します。これにより、Goroutine が別のスレッドで実行されます。ただし、本当に並列処理を実現するには、ユーザーは複数の物理プロセッサを備えたマシンでプログラムを実行する必要があります。そうしないと、たとえ Go 言語が実行中に複数のスレッドを使用したとしても、ゴルーチンは同じ物理プロセッサ上で同時に実行され、並列効果は達成されません。
次の図は、1 つの論理プロセッサーで goroutine を同時に実行する場合と、2 つの論理プロセッサーで 2 つの goroutine を並行して実行する場合の違いを示しています。スケジューラには、Go 言語のリリースとともに更新および改善されるいくつかの賢いアルゴリズムが含まれているため、言語のランタイム中に論理プロセッサのデフォルト設定をやみくもに変更することはお勧めできません。論理プロセッサの数を変更することでパフォーマンスが向上すると本当に考えられる場合は、言語ランタイム パラメーターをわずかに調整することもできます。
図: 同時実行と並列処理の違い
Go 言語は、GOMAXPROCS の数がタスクの数と等しい場合に並列実行を実現できますが、通常の状況ではが同時に実行されます。
【関連する推奨事項: Go ビデオ チュートリアル 、プログラミング教育 】
以上がGo における同時実行と並列処理の違いは何ですかの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ホットAIツール

Undresser.AI Undress
リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover
写真から衣服を削除するオンライン AI ツール。

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

AI Hentai Generator
AIヘンタイを無料で生成します。

人気の記事

ホットツール

メモ帳++7.3.1
使いやすく無料のコードエディター

SublimeText3 中国語版
中国語版、とても使いやすい

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境

ドリームウィーバー CS6
ビジュアル Web 開発ツール

SublimeText3 Mac版
神レベルのコード編集ソフト(SublimeText3)

ホットトピック









Go Crawler Collyのキュースレッドの問題は、Go言語でColly Crawler Libraryを使用する問題を調査します。 �...

Go言語での文字列印刷の違い:printlnとstring()関数を使用する効果の違いはGOにあります...

redisstreamを使用してGo言語でメッセージキューを実装する問題は、GO言語とRedisを使用することです...

Golandのカスタム構造ラベルが表示されない場合はどうすればよいですか?ゴーランドを使用するためにGolandを使用する場合、多くの開発者はカスタム構造タグに遭遇します...

大企業または有名なオープンソースプロジェクトによって開発されたGOのどのライブラリが開発されていますか? GOでプログラミングするとき、開発者はしばしばいくつかの一般的なニーズに遭遇します...

GO言語で構造を定義する2つの方法:VARとタイプのキーワードの違い。構造を定義するとき、GO言語はしばしば2つの異なる執筆方法を見ます:最初...

マルチプロセスのログライティングの並行性セキュリティの問題を効率的に処理します。複数のプロセスが同じログファイルを同時に書き込みます。並行性が安全で効率的であることを確認する方法は?これは...
