Junior — Middle
Este permis să se trimită mesaje către un singur canal cu mai multe goroutines în același timp?
sobes.tech AI
Răspuns de la AI
Da, în Go este permis să trimiteți mesaje către un canal din mai multe goroutines simultan. Canalele în Go sunt sigure pentru concurență și asigură sincronizarea între goroutines.
Cu toate acestea, este important să rețineți:
- Dacă mai multe goroutines scriu într-un canal și nimeni nu îl citește, acest lucru va duce la blocare.
- Dacă canalul are buffer, scrierile vor fi blocate doar atunci când bufferul este plin.
- Este necesar să gestionați cu atenție închiderea canalului: doar expeditorul trebuie să îl închidă, și doar atunci când este sigur că nu vor mai fi scrieri.
Exemplu:
ch := make(chan int)
// Pornirea mai multor goroutines care trimit date în canal
for i := 0; i < 3; i++ {
go func(id int) {
ch <- id
}(i)
}
// Citirea din canal
for i := 0; i < 3; i++ {
fmt.Println(<-ch)
}
Astfel, trimiterea simultană în canal din mai multe goroutines este o practică standard în Go.