Sobes.tech
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ње неће блокирати, можете користити канал са буфером. На овај начин, ручне блокаде нису потребне, јер канал обезбеђује синхронизацију.