Junior — Middle
Kako osigurati sigurnu zapisivanje podataka u kanal iz više gorutina bez korišćenja zaključavanja?
sobes.tech АИ
Одговор од АИ
У Go, да бисте безбедно писали податке у канал из више горутина без коришћења блокада, обично је довољно да користите сам канал, јер су канали у Go подразумевано безбедни за конкуренцију.
Пример:
ch := make(chan int)
// Писaње у канал из више горутина
for i := 0; i < 5; i++ {
go func(val int) {
ch <- val // безбедно писање
}(i)
}
// читање из канала
for i := 0; i < 5; i++ {
fmt.Println(<-ch)
}
Ако желите да гарантујете да писaње неће блокирати, можете користити канал са буфером. На овај начин, ручне блокаде нису потребне, јер канал обезбеђује синхронизацију.