Sobes.tech
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.