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