Junior — Middle
Farklı yarışan gorutinlerden aynı anda bir Map'e yazarken ne gibi sonuçlar ortaya çıkar?
sobes.tech yapay zeka
AI'dan gelen yanıt
Go'da standart harita (map), birden fazla goroutine'den aynı anda okuma ve yazma işlemleri için güvenli değildir. Eğer birkaç goroutine, senkronizasyon olmadan aynı haritaya aynı anda yazmaya çalışırsa, bu yarış koşullarına, çalışma zamanı paniklerine (fatal error: concurrent map writes) ve programın öngörülemeyen davranışlarına yol açar.
Sorunları önlemek için:
- Map'e erişimi korumak için mutexler (sync.Mutex) kullanın.
- sync.Map gibi özel, thread-safe veri yapıları kullanın.
Mutex ile örnek:
var mu sync.Mutex
var m = make(map[string]int)
func write(key string, value int) {
mu.Lock()
m[key] = value
mu.Unlock()
}
Bu koruma olmadan, program aniden kapanabilir.