Go 言語の同時実行制御の同時実行実装: 軽量スレッド「ゴルーチン」を使用して並列実行タスクを実装します。同期実装: 「チャネル」を使用してゴルーチン間でデータを転送し、同期通信を実現します。実践的なケース: HTTP リクエストを並列処理し、時間のかかるタスクを非同期で処理する goroutine を作成して、サーバーのパフォーマンスと応答性を向上させます。
エンジニアリング プロジェクトにおける Golang 関数の同時実行制御の実践例
Go を使用して分散システムを構築する場合、同時実行制御は次のとおりです。極めて重要な。 Go は、ゴルーチンやチャネルなどの強力な同時実行メカニズムを提供し、高性能でスケーラブルなアプリケーションを作成できます。
Goroutine を使用して同時実行性を実現する
Goroutine は Go の軽量スレッドです。 go
キーワードを使用して関数を並列実行できます。
func main() { go func() { fmt.Println("Hello from goroutine") }() }
上記のコードは、メイン プログラムと並行して実行される新しい goroutine を作成します。
チャネルを使用して同期を実現する
チャネルは、ゴルーチン間でデータを転送するために使用されます。これらはキューのように動作し、1 つの goroutine (送信者) はチャネルにデータを書き込むことができ、別の goroutine (受信者) はチャネルからデータを読み取ることができます。
func main() { ch := make(chan int) go func() { ch <- 42 }() fmt.Println(<-ch) // 读取 channel 中的数据 }
上記の例では、ゴルーチンが値 42 をチャネルに書き込み、メイン プログラムがチャネルから値を読み取って出力します。
実践的なケース: HTTP リクエストの並列処理
次のコードは、Go 言語を使用して HTTP リクエストを並列処理する方法の例を示しています。
package main import ( "fmt" "net/http" ) func main() { http.HandleFunc("/", func(w http.ResponseWriter, r *http.Request) { go func() { //并行执行一个耗时的任务 processRequest(r) }() //立即向客户端响应 fmt.Fprintf(w, "HTTP 200 OK\n") }) http.ListenAndServe(":8080", nil) } func processRequest(r *http.Request) { fmt.Println("耗时的任务正在处理") }
この場合 この場合、クライアントへの HTTP リクエストに即座に応答しながら、時間のかかるタスクを非同期で処理する新しい goroutine を作成します。これにより、サーバーのパフォーマンスと応答性が大幅に向上します。
以上がエンジニアリングプロジェクトにおける golang 関数の同時実行制御の実践例の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。