Cách thức thành ngữ để gán thời gian chờ là WaitGroup.Wait() là gì?Thời gian chờ cho WaitGroup.Wait()
Lý do tôi muốn làm điều này, là để bảo vệ 'bộ lập lịch' của tôi khỏi khả năng đang chờ một 'công nhân' sai lệch bao giờ hết. Điều này dẫn đến một số câu hỏi triết học (tức là làm thế nào hệ thống có thể tiếp tục một cách đáng tin cậy khi nó có công nhân sai lầm?), Nhưng tôi nghĩ điều đó nằm ngoài phạm vi của câu hỏi này.
Tôi có câu trả lời mà tôi sẽ cung cấp. Bây giờ tôi đã viết nó xuống, nó không có vẻ xấu như vậy nhưng nó vẫn cảm thấy phức tạp hơn nó nên. Tôi muốn biết nếu có một cái gì đó có sẵn mà là đơn giản hơn, thành ngữ hơn, hoặc thậm chí là một cách tiếp cận thay thế mà không sử dụng WaitGroups.
Ta.
cảm ơn, câu trả lời rất kỹ lưỡng. Cuối cùng tôi đã ngừng sử dụng một WaitGroup hoàn toàn, và sử dụng một kênh duy nhất để thay thế. Mã của tôi kết thúc đơn giản hơn, rõ ràng hơn và 'ít có vấn đề' hơn. Mã của tôi có thể đếm số lần lặp lại, vì vậy tôi có thể sử dụng lệnh chọn một số lần cố định, sau đó sử dụng một NewTimer duy nhất cho thời gian chờ. Để hoàn thành, tôi sẽ thêm một câu trả lời khác trong khóa học. – laher
Vì vậy, một chút FYI vì điều này chỉ xuất hiện trong # go-nut: Điều này sẽ * không * hoạt động nếu các cuộc gọi 'wg.Add' là * bên trong một goroutine *. Chỉ cần bình luận trong trường hợp ai đó sử dụng mã này theo cách tương tự với vấn đề # go-nut vừa giải quyết! –
nếu 'wg.Wait()' không bao giờ trở lại, nó có rò rỉ một goroutine không? – coanor