Go 言語は、Goroutine を通じて同時プログラミングを実装しており、軽量のスレッドを同時に実行できます。 go キーワードを使用して goroutine を作成し、パイプ (chan タイプ) 経由で通信できます。実際には文字列を並列検索し、各ゴルーチンの検索結果を受け取るパイプラインを作成することで検索速度を向上させます。
Go 関数を使用した同時プログラミング
Go 言語には、同時プログラミングに使用できる Goroutine と呼ばれる軽量のスレッドが用意されています。 Goroutine は同時に実行できるため、アプリケーションのパフォーマンスと応答性が向上します。
Goroutine を作成するには、go
キーワードに続いて、実行する関数を使用します。
go func() { fmt.Println("这是一个 Goroutine!") }
Goroutine は値を送受信することもできます。 chan
タイプを使用して、ゴルーチン間の通信を可能にするパイプラインを作成します。
// 创建管道 ch := make(chan string) // Goroutine 发送值 go func() { ch <- "消息 1" ch <- "消息 2" } // 主程序接收值 for msg := range ch { fmt.Println(msg) }
実用的なケース: 文字列の並列検索
文字列を検索する必要があるファイルのリスト。 Goroutine を使用してこれを並行して実行し、検索を高速化できます。
// 文件列表 files := []string{"file1.txt", "file2.txt", "file3.txt"} // 创建管道 result := make(chan string) // Goroutine 并行查找字符串 for _, file := range files { go func(file string) { data, err := ioutil.ReadFile(file) if err != nil { result <- file + ": " + err.Error() return } result <- file + ": " + strconv.Itoa(strings.Count(string(data), "foo")) }(file) } // 主程序打印结果 for result := range result { fmt.Println(result) }
この例を使用すると、各ファイル内の文字列 "foo" の出現数を並行して見つけることができ、シングルスレッド検索のパフォーマンス。
以上がGolang 関数は同時プログラミングにどのように使用されますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。