Ở bài viết trước về Goroutine, để ngăn cho hàm main( ) exit trước khi 2 goroutine printNumber( ) và printChar( ) được chạy, ta phải tạm thời "ngừng" hàm main( ) lại trong 3s bằng đoạn code: time.Sleep(3 * time.Second). Nhờ đó mà 2 goroutine có thể được đẩy từ Local Run Queue lên chạy trên OS thread
Tất nhiên, đây chỉ là 1 giải pháp mang tính "chữa cháy" vì chúng ta không thể biết chính xác 2 goroutine printNumber( ) và printChar( ) sẽ chạy trong bao lâu để thiết lập thời gian chờ cho hàm main( )
WaitGroup sinh ra để giải quyết vấn đề này: chờ cho tất cả các goroutine thực hiện xong việc thì mới chạy tiếp (Wait for a Group of goroutines to finish)
Bình luận