7
Mam kolejkę i funkcję, która wykonuje zarówno zapisywanie w kolejce jak i zapisywanie. Chcę się upewnić, że odpowiednia ilość goroutinów działa w kolejce, o ile istnieje coś na liście.count/wyświetla liczbę aktywnych goroutines
Jest to kod używam, ale zastanawiałem się, czy istnieje sposób drukowania ilości aktualnie aktywnych 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
}
Dzięki, ale nie jest WaitGroup czekać, że coś jest zrobione? Naprawdę chcę się upewnić, że nie umrą zbyt wcześnie z jakiegoś zewnętrznego powodu. – meto
@meto Goroutines nie "umierają" w ten sposób, jeśli goroutine zginie, to twój program najprawdopodobniej rozbił się, dodam przykład. – OneOfOne
To bardzo interesujące. To tylko szybkie pytanie uzupełniające. Część wg.Done mogła zostać umieszczona również po Println, ale na pewno przed if, prawda? – meto