Rumah > Artikel > pembangunan bahagian belakang > Pengaturcaraan serentak Golang: menggunakan Go WaitGroup untuk melaksanakan penjadual tugas
Golang pengaturcaraan serentak: Gunakan Go WaitGroup untuk melaksanakan penjadual tugas
WaitGroup mengekalkan kaunter secara dalaman untuk merekodkan bilangan tugasan yang belum selesai. Apabila kaedah Tambah dipanggil, pembilang ditambah dengan nilai yang ditentukan; apabila kaedah Selesai dipanggil, pembilang dikurangkan dengan 1 apabila kaedah Tunggu dipanggil, jika pembilang lebih besar daripada 0, goroutine semasa akan menjadi disekat sehingga kaunter kembali kepada sifar.
package main import ( "fmt" "sync" "time" ) func worker(id int, wg *sync.WaitGroup) { defer wg.Done() fmt.Printf("Worker %d starting ", id) time.Sleep(time.Second) fmt.Printf("Worker %d done ", id) } func main() { var wg sync.WaitGroup for i := 1; i <= 5; i++ { wg.Add(1) go worker(i, &wg) } wg.Wait() fmt.Println("All workers done") }
Dalam contoh ini, kami menggunakan gelung for untuk memulakan 5 goroutin pekerja dan hubungi wg.Add(1) untuk menambah nombor tugas kepada WaitGroup. Dalam fungsi pekerja, gunakan kata kunci tangguh untuk memastikan wg.Done() dipanggil sebelum fungsi kembali untuk mengurangkan nilai pembilang. Akhir sekali, gunakan wg.Wait() untuk menunggu semua tugasan selesai.
Worker 1 starting Worker 2 starting Worker 3 starting Worker 4 starting Worker 5 starting Worker 3 done Worker 1 done Worker 2 done Worker 5 done Worker 4 done All workers done
Anda dapat melihat bahawa semua goroutine pekerja dilaksanakan secara serentak, tetapi urutan output tidak semestinya dalam urutan permulaan. penjadualan dilakukan oleh masa jalan Go.
Melalui pengenalan dan contoh kod artikel ini, saya percaya anda mempunyai pemahaman yang lebih mendalam tentang cara menggunakan WaitGroup Golang untuk melaksanakan penjadual tugas. Saya harap artikel ini akan membantu anda mempelajari dan menggunakan pengaturcaraan serentak di Golang!
Atas ialah kandungan terperinci Pengaturcaraan serentak Golang: menggunakan Go WaitGroup untuk melaksanakan penjadual tugas. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!