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
syncili 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.