Junior — Middle
Çox ipli mühitdə yığın ilə işləmə necə həyata keçirilir?
sobes.tech Süni İntellekt
AI-dan cavab
Go-da çox iş parçacığı mühitində yığın (heap) ilə işləmə daxili çöp toplayıcı və goroutine planlayıcısı vasitəsilə həyata keçirilir. Yığın, dinamik obyektlərin yerləşdirildiyi yaddaş sahəsidir və ona müxtəlif goroutine-lərdən giriş ola bilər.
Yığın ilə təhlükəsiz işləmək üçün Go istifadə edir:
- Çöp toplayıcı (GC), avtomatik olaraq istifadə olunmayan yaddaşı azad edir və yaddaş sızıntılarının qarşısını alır.
- Mutexlər və digər sinxronizasiya primitivləri (sync paketindən), əgər ümumi verilənlərə girişə açıq şəkildə nəzarət etmək lazım olsa.
Nümunə: əgər bir neçə goroutine yığında saxlanılan ümumi məlumat strukturasına müraciət edirsə, yarış şəraitlərinin qarşısını almaq üçün sync.Mutex istifadə olunmalıdır:
var mu sync.Mutex
var sharedData = make(map[string]int)
func writeData(key string, value int) {
mu.Lock()
defer mu.Unlock()
sharedData[key] = value
}
func readData(key string) int {
mu.Lock()
defer mu.Unlock()
return sharedData[key]
}
Beləliklə, Go çöp toplayıcı vasitəsilə yığın ilə işləmənin təhlükəsizliyini təmin edir və lazım olduqda sinxronizasiya üçün alətlər təqdim edir.