Junior — Middle
Aynı kanala birden fazla goroutine ile aynı anda mesaj göndermek izinli midir?
sobes.tech yapay zeka
AI'dan gelen yanıt
Evet, Go dilinde aynı anda birkaç goroutine’dan bir kanala mesaj göndermek mümkündür. Kanallar, Go’da eşzamanlılığa karşı güvenlidir ve goroutine’ler arasında senkronizasyon sağlar.
Ancak, şunu unutmamak önemlidir:
- Birden fazla goroutine aynı kanala yazıyorsa ve kimse okumuyorsa, bu blokajla sonuçlanır.
- Kanal tamponlu ise, yazma işlemleri sadece tampon dolduğunda bloklanır.
- Kanalın kapatılması dikkatli yapılmalıdır: Sadece gönderen kapatmalı ve sadece daha fazla yazı olmayacağından emin olduğunda.
Örnek:
ch := make(chan int)
// Birden fazla goroutine’un kanala veri göndermesi
for i := 0; i < 3; i++ {
go func(id int) {
ch <- id
}(i)
}
// Kanaldan okuma
for i := 0; i < 3; i++ {
fmt.Println(<-ch)
}
Bu şekilde, birkaç goroutine’dan aynı anda kanala gönderim, Go’da standart bir uygulamadır.