Я новичок в Го и занимаюсь некоторыми практиками с книгой "Маленькая книга Го" из главы Параллелизм. Я не могу понять, что происходит, удаляя time.Sleep(time.Millisecond * 50)
, который изменяет вывод, выводя только результаты печати для "работника 4".
package main
import (
"fmt"
"math/rand"
"time"
)
func main() {
c := make(chan int)
for i := 0; i < 5; i++ {
worker := &Worker{id: i}
go worker.process(c)
}
for {
c <- rand.Int()
time.Sleep(time.Millisecond * 50) // ???
}
}
type Worker struct {
id int
}
func (w *Worker) process(c chan int) {
for {
data := <-c
fmt.Printf("worker %d got %d\n", w.id, data)
}
}