की समाप्ति की प्रतीक्षा करें मुझे बड़ी मात्रा में goroutines शुरू करने और उनकी समाप्ति की प्रतीक्षा करने की आवश्यकता है। सहज तरीके तक उन सभी को पूरा कर लें प्रतीक्षा करने के लिए एक चैनल का उपयोग करने लगता है:एन goroutines
package main
type Object struct {
//data
}
func (obj *Object) Update(channel chan int) {
//update data
channel <- 1
return
}
func main() {
channel := make(chan int, n)
list := make([]Object, n, m)
for {
for _, object := range list {
go object.Update(channel)
}
for i := 0; i < n; i++ {
<-channel
}
//now everything has been updated. start again
}
}
लेकिन समस्या यह है कि वस्तुओं की मात्रा और इसलिए goroutines की राशि बदल सकता है। क्या चैनल के बफर आकार को बदलना संभव है?
क्या ऐसा करने के लिए शायद एक और शानदार तरीका है?
आप इसे प्रत्येक यात्रा को पुनः निर्दिष्ट कर सकता है, लेकिन आप [WaitGroup] (http://golang.org/pkg/sync/#WaitGroup) को देखने के लिए चाहते हो सकता है। – tjameson
tjameson, त्वरित मदद के लिए धन्यवाद। यह वास्तव में अच्छा लग रहा है। आप इसे एक उत्तर बनाना चाहते हैं। – lhk
हो गया, उदाहरण के साथ = डी – tjameson