Rumah >pembangunan bahagian belakang >Golang >Cara Golang berfungsi dengan cekap mengendalikan tugas selari
Pengendalian tugas selari yang cekap dalam fungsi Go: Gunakan kata kunci go untuk melancarkan rutin serentak. Gunakan sync.WaitGroup untuk mengira bilangan rutin yang belum selesai. Apabila rutin selesai, wg.Done() dipanggil untuk mengurangkan kaunter. Program utama menyekat menggunakan wg.Wait() sehingga semua rutin selesai. Kes praktikal: Hantar permintaan web secara serentak dan kumpulkan respons.
Pemprosesan tugas selari yang cekap dalam fungsi Go
Bahasa Go menyediakan keupayaan pemprosesan selari yang berkuasa, membolehkan pembangun mencipta dan melaksanakan tugas serentak dengan mudah. Artikel ini akan membincangkan cara menggunakan fungsi Go untuk mengendalikan tugas selari dengan cekap dan menyediakan kes praktikal untuk menunjukkan penggunaannya.
Fungsi Concurrency dalam Go
Fungsi Go menyediakan dua kata kunci untuk menyokong pelaksanaan serentak: go
dan sync.WaitGroup
. Kata kunci go
digunakan untuk memulakan rutin Go serentak, manakala sync.WaitGroup
digunakan untuk menunggu semua rutin selesai. go
和 sync.WaitGroup
。go
关键字用于启动并发的 Go 例程,而 sync.WaitGroup
用于等待所有例程完成。
等待组
sync.WaitGroup
是一个计数器,用于跟踪未完成例程的数量。当例程完成时,它会调用 wg.Done()
来递减计数器。主程序可以使用 wg.Wait()
方法来阻塞,直到所有例程完成。
实战案例:并发 Web 请求
考虑一个场景,我们需要并发发送多个 Web 请求并收集响应。以下是演示如何使用 Go 函数进行高效并发任务处理的代码:
package main import ( "fmt" "net/http" "sync" ) func main() { // 要发送的 Web 请求 URL urls := []string{"https://example.com", "https://example2.com", "https://example3.com"} // 创建等待组 var wg sync.WaitGroup for _, url := range urls { // 启动一个并发例程来发送 Web 请求 wg.Add(1) go func(url string) { // 发送 GET 请求 resp, err := http.Get(url) if err != nil { fmt.Printf("Error getting %s: %v\n", url, err) } else { fmt.Printf("Status code for %s: %d\n", url, resp.StatusCode) } // 例程完成,递减等待组计数 wg.Done() }(url) } // 等待所有例程完成 wg.Wait() }
在上面的代码中:
sync.WaitGroup
来跟踪未完成例程的数量。wg.Done()
来表示它已完成。wg.Wait()
wg.Done()
untuk mengurangkan kaunter. Program utama boleh menggunakan kaedah wg.Wait()
untuk menyekat sehingga semua rutin selesai. 🎜🎜🎜Kes Praktikal: Permintaan Web Serentak🎜🎜🎜Pertimbangkan senario di mana kita perlu menghantar berbilang permintaan web serentak dan mengumpulkan respons. Berikut ialah kod yang menunjukkan cara menggunakan fungsi Go untuk pemprosesan tugas serentak yang cekap: 🎜rrreee🎜 Dalam kod di atas: 🎜sync.WaitGroup
untuk menjejaki kuantiti rutin tertunggak. 🎜wg.Done()
untuk menunjukkan bahawa ia telah selesai. 🎜wg.Wait()
untuk menyekat sehingga semua rutin selesai. 🎜🎜🎜Dengan menggunakan kaedah ini, kami boleh menghantar berbilang permintaan web secara serentak dan terus melaksanakan program utama tanpa menunggu respons setiap permintaan. 🎜Atas ialah kandungan terperinci Cara Golang berfungsi dengan cekap mengendalikan tugas selari. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!