Junior — Middle
Bir kanaldan aynı anda birden fazla goroutine'den değerler alınabilir mi?
sobes.tech yapay zeka
AI'dan gelen yanıt
Evet, birkaç goroutine aynı anda Go'da bir kanaldan değer alabilir. Kanallar, çoklu okuma ve yazma desteği sağlar, bu da birkaç goroutine'un aynı kanaldan paralel olarak okuyabilmesine olanak tanır.
Ancak, birkaç goroutine aynı kanaldan okursa, her değer yalnızca bunlardan biri tarafından alınır — değerler çoğaltılmaz. Bu, iş dağıtımı için kullanışlıdır (işçi havuzu).
Örnek:
ch := make(chan int)
// Kanaldan okuyan birkaç goroutine başlat
for i := 0; i < 3; i++ {
go func(id int) {
for val := range ch {
fmt.Printf("Goroutine %d %d aldı\n", id, val)
}
}(i)
}
// Kanala veri gönder
for i := 0; i < 10; i++ {
ch <- i
}
close(ch)
Bu örnekte, kanaldaki değerler üç goroutine arasında dağıtılır.