Junior — Middle
Go proqramlaşdırma dilində sinxronizasiya primitive'lərinin rolu nədir?
sobes.tech Süni İntellekt
AI-dan cavab
Go dilində sinxronizasiya primitivləri paylaşılan resurslara girişin idarə olunması və goroutine-lərin icrasını koordinasiya etmək üçün istifadə olunur, bu da yarış şərtlərini qarşısını alır və proqramın düzgünlüyünü təmin edir.
Əsas primitivlər:
- Mutex (sync.Mutex) — qarşılıqlı istisna təmin edir, yalnız bir goroutine-in kritik bölməni eyni zamanda icra etməsinə imkan verir.
- WaitGroup (sync.WaitGroup) — goroutine qrupunun tamamlanmasını gözləməyə imkan verir.
- Kanal — goroutine-lər arasında məlumat ötürülməsi üçün kanal, özü güclü bir sinxronizasiya primitividir.
- RWMutex (sync.RWMutex) — bir neçə goroutine məlumatları eyni vaxtda oxumağa imkan verir, lakin yazma hamısını bloklayır.
Mutex istifadəsinin nümunəsi:
var mu sync.Mutex
var sayğac int
func artır() {
mu.Lock()
defer mu.Unlock()
sayğac++
}
Beləliklə, sinxronizasiya primitivləri paralel məlumat girişində qarşıdurmaları qarşısını almağa və goroutine-lər arasında düzgün qarşılıqlı əlaqəni təmin etməyə kömək edir.