Go で並列コンピューティングに Goroutine を使用する方法
概要:
Go 言語は、並列コンピューティングをネイティブにサポートする同時プログラミング言語です。 Go は、並列コンピューティングを実装するためのゴルーチンとチャネルを提供します。この記事では、Go での並列コンピューティングに Goroutine を使用する方法を紹介し、いくつかのコード例を示します。
Goroutines:
Goroutine は Go 言語の軽量スレッドで、プログラムの実行中に作成および破棄でき、作成、破棄、切り替えのコストは非常に低くなります。 Goroutines を使用すると、プログラムに効率的な並列コンピューティングを実装できます。
Goroutine を並列計算に使用する手順は次のとおりです:
コード例:
package main import ( "fmt" "sync" ) func calculate(num int, wg *sync.WaitGroup) { defer wg.Done() result := num * 2 fmt.Println(result) } func main() { var wg sync.WaitGroup for i := 1; i <= 10; i++ { wg.Add(1) go calculate(i, &wg) } wg.Wait() }
上の例では、整数を受け取り、それを 2 で乗算して出力する、calculate という関数を作成しました。 main 関数では、ループを使用して 10 個のゴルーチンを作成し、各数値をパラメーターとして計算関数に渡します。すべてのゴルーチンが確実に実行されるように、同期パッケージの WaitGroup を使用します。
コード例:
package main import ( "fmt" "sync" ) func calculate(num int, wg *sync.WaitGroup, result chan<- int) { defer wg.Done() result <- num * 2 } func main() { var wg sync.WaitGroup result := make(chan int) for i := 1; i <= 10; i++ { wg.Add(1) go calculate(i, &wg, result) } go func() { wg.Wait() close(result) }() for res := range result { fmt.Println(res) } }
上の例では、計算関数の結果を結果チャネルを通じて送信します。 main 関数では、匿名関数を使用して、すべてのゴルーチンの実行が完了し、結果のチャネルを閉じるのを待ちます。最後に、結果チャネルで結果を受け取り、for ループで range を使用して出力します。
概要:
ゴルーチンとチャネルを使用すると、Go 言語で効率的な並列コンピューティングを実現できます。ゴルーチンを使用すると、同時実行のコンピューティング タスクを簡単に作成および破棄することができ、チャネルを使用すると、データを簡単に転送できます。実際のアプリケーションでは、必要に応じてさまざまな数のゴルーチンを作成し、コンピューティング タスクの特性に基づいて適切な並列コンピューティング モデルを選択できます。
上記は、Go での並列計算に Goroutine を使用する方法の紹介とサンプルコードです。この記事が Go 言語での並行プログラミングを理解するのに役立つことを願っています。
以上がGo での並列コンピューティングに Goroutine を使用する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。