Sobes.tech
Junior — Middle

Fərqli iş parçaları eyni yaddaş ünvanı ilə eyni zamanda əlaqə qura bilərmi?

sobes.tech Süni İntellekt

AI-dan cavab

Bəli, Go-da müxtəlif gorutinalar (iplar) eyni yaddaş ünvanına eyni zamanda müraciət edə bilər. Ancaq bu, sinxronizasiya edilməzsə, yarış şəraitlərinə (race conditions) səbəb ola bilər. Paylaşılan yaddaşla təhlükəsiz qarşılıqlı əlaqə üçün sinxronizasiya mexanizmləri, məsələn, mutexlər (sync.Mutex), kanallar (chan) və ya sync/atomic paketindən atomik əməliyyatlar istifadə olunur.

Paylaşılan dəyişənə girişin qorunması üçün mutex istifadə nümunəsi:

var mu sync.Mutex
var counter int

func increment() {
    mu.Lock()
    counter++
    mu.Unlock()
}

Bu tədbirlər olmadan, eyni zamanda giriş proqramın gözlənilməz davranışlarına səbəb ola bilər.