Go 言語は、組み込み構文を通じて関数の同時実行性を制御します。これには、 go func() による Goroutine の作成、sync.Mutex ミューテックスによる共有データの保護、sync.WaitGroup 待機グループによる Goroutine の実行の調整、および sync.Cond 条件変数の協調制御が含まれます。これらの組み込み構文は、同時実行、データ保護、協調制御をサポートし、プログラムのパフォーマンスを最適化するフィボナッチ数列の並列計算の例でその実際の応用例を示します。
Go 言語関数の同時実行制御の組み込み構文と関数の紹介
Go 言語の同時実行は次のように実装されます。 Goroutine Goroutine Go 言語の軽量スレッドです。 Goroutine を使用すると、マルチコア CPU を最大限に活用してプログラムのパフォーマンスを向上させる同時実行プログラムを作成できます。
組み込み構文
Go 言語には、関数の同時実行性を制御するための次の組み込み構文が用意されています:
機能
これらの組み込み構文は次の機能を提供します:
実践的なケース
以下は、フィボナッチ数列を計算するための実践的なケースであり、同時計算に Goroutine を使用する方法を示しています:
package main import ( "fmt" "sync" ) // 计算斐波那契数列 func fibonacci(n int) int { if n <= 1 { return n } return fibonacci(n-1) + fibonacci(n-2) } func main() { // 创建互斥锁保护计数器 var mu sync.Mutex // 创建等待组等待所有 Goroutine 完成 var wg sync.WaitGroup // 并发计算斐波那契数列 for i := 0; i < 10; i++ { wg.Add(1) go func(i int) { defer wg.Done() result := fibonacci(i) // 使用互斥锁保护计数器 mu.Lock() fmt.Printf("Fibonacci(%d) = %d\n", i, result) mu.Unlock() }(i) } // 等待所有 Goroutine 完成 wg.Wait() }
このプログラムは、フィボナッチ数列の最初の 10 個の数値を並行して計算し、各数値が順番に出力されるようにミューテックスを使用して出力を保護します。
以上がgolang 関数同時実行制御の組み込み構文と関数の紹介の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。