Junior — Middle
Go dilində Mutex istifadə edərək qarşılıqlı istisna mexanizmi necə həyata keçirilir?
sobes.tech Süni İntellekt
AI-dan cavab
Go dilində qarşılıqlı istisna (mutex) tətbiq etmək üçün sync.Mutex tipi istifadə olunur. Bu, kodun kritik bölmələrini bir neçə goroutine tərəfindən eyni vaxtda girişdən qoruyur və yarış şəraitlərinin qarşısını alır.
Əsas əməliyyatlar:
Lock()— mutex-i kilidləyir, digər goroutine-lərin girişini maneə törədir.Unlock()— mutex-i açır, digər goroutine-lərə davam etməyə imkan verir.
İstifadə nümunəsi:
package main
import (
"fmt"
"sync"
)
func main() {
var mu sync.Mutex
counter := 0
mu.Lock() // Mutex-i kilidləyir
counter++
fmt.Println("Sayğac:", counter)
mu.Unlock() // Mutex-i açır
}
Çox ipli mühitdə, mutex yalnız bir goroutine-in Lock() və Unlock() arasında kodu icra etməsini təmin edir, bu da paylaşılan məlumatların düzgün olmayan dəyişikliklərinin qarşısını alır.