मेरे पास एक कतार और एक फ़ंक्शन है जो दोनों को हटाने और enqueueing करता है। मैं यह सुनिश्चित करना चाहता हूं कि जब तक सूची में कुछ न हो, तब तक सही मात्रा में goroutines कतार पर काम करते हैं।सक्रिय goroutines की संख्या को गिनती/प्रदर्शित करें
इस कोड मैं का उपयोग कर रहा है, लेकिन अगर वहाँ वर्तमान में सक्रिय goroutines
var element int
func deen(queue chan int) {
element := <-queue
fmt.Println("element is ", element)
if element%2 == 0 {
fmt.Println("new element is ", element)
queue <- (element*100 + 11)
queue <- (element*100 + 33)
}
}
func main() {
queue := make(chan int, 10)
queue <- 1
queue <- 2
queue <- 3
queue <- 0
for len(queue) != 0 {
for i := 0; i < 2; i++ {
go deen(queue)
}
}
fmt.Scanln()
fmt.Println("list is has len", len(queue)) //this must be 0
}
धन्यवाद लेकिन प्रतीक्षा करने के लिए है कि कुछ किया जाता है WaitGroup नहीं है? मैं वास्तव में यह सुनिश्चित करना चाहता हूं कि वे कुछ बाहरी कारणों से बहुत जल्दी मर नहीं पाएंगे – meto
@ मेटो गोरौटाइन्स इस तरह "मरने" नहीं करते हैं, अगर कोई गोरौटाइन मर जाता है तो आपका प्रोग्राम सबसे अधिक दुर्घटनाग्रस्त हो जाता है, मैं एक उदाहरण जोड़ूंगा। – OneOfOne
यह बहुत दिलचस्प है। बस एक त्वरित अनुवर्ती सवाल। Wg.Done भाग प्रिंटल के बाद भी रखा जा सकता था, लेकिन निश्चित रूप से अगर सही से पहले, सही? – meto