Go の並列処理: ゴルーチンと GoMaxProcs
Go では、複数のタスクを同時に実行する機能はゴルーチンによって実現されます。指定されたコードでは、 go f(i) ステートメントを使用して 3 つのゴルーチンが生成されます。これらのゴルーチンは main 関数と同時に実行され、複数のタスクを並行して実行できます。
ゴルーチンが完了する前に main 関数が終了しないように、Scanln 関数を使用してユーザー入力を待機します。ただし、main 関数を終了する前に、sync.WaitGroup を使用してすべてのゴルーチンが完了するのを待つことをお勧めします。
dowork 関数は、5 秒間スリープすることで作業をシミュレートします。 goroutine 内で呼び出されるため、他の goroutine 呼び出しと同時に実行されます。ただし、dowork 関数が実行される順序は決定的ではなく、基礎となるハードウェアやオペレーティング システムのスケジューリングなどの要因によって異なります。
GoMaxProcs は、によって使用される同時 OS スレッドの最大数を制御する環境変数です。 Go ランタイム。デフォルトでは、Go は GOMAXPROCS をシステム上で使用可能な CPU の数に設定します。この値は、Go プログラムの同時実行動作を最適化するために変更できます。
指定されたコードでは、ゴルーチンを使用して dowork 関数を実行することが、並列処理を実現するための有効なアプローチです。ただし、タスクの並列処理と実行順序をさらに制御する必要がある場合は、dowork 関数の実行専用のチャネルと個別のワーカーの使用を検討できます。このアプローチにより、柔軟性が向上し、より微調整された同時実行管理が可能になります。
さらに、提供された回答で言及されている Parallelize 関数など、タスクの並列化を合理化するのに役立つユーティリティ関数とライブラリが利用可能です。囲碁で。これらのユーティリティは、コードに並列処理を実装するための便利で効率的な方法を提供します。
以上がGo で並列処理を実現する方法: Goroutines、GoMaxProcs、およびチャネルをいつ検討するか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。