Sobes.tech
Junior — Middle

Da li ovaj niz obezbeđuje sigurnost pri korišćenju u višestrukom okruženju?

sobes.tech АИ

Одговор од АИ

U Go, obični sečevi (nizovi sa dinamičkom veličinom) nisu sigurni za višestruko pokretanje po defaultu. Ako više gorutina istovremeno čitaju i pišu u isti seč, bez sinhronizacije, doći će do trkačkih uslova i nepredvidivog ponašanja.

Da bi se obezbedila sigurnost u višestrukom okruženju, potrebno je koristiti:

  • Mutekse (sync.Mutex) za blokiranje pristupa tokom izmene seča.
  • Kanale (chan) za prenos podataka između gorutina.
  • Specijalizovane strukture podataka iz paketa sync ili spoljašnjih biblioteka.

Primer sa muteksom:

var mu sync.Mutex
var slice []int

func appendSafe(val int) {
    mu.Lock()
    defer mu.Unlock()
    slice = append(slice, val)
}

Bez ovih mera, niz nije siguran za paralelnu upotrebu.