Sobes.tech
Junior — Middle

Vai vari paskaidrot, kas ir savstarpēja izslēgšana (Mutex) un kā tā darbojas?

sobes.tech AI

Atbilde no AI

Mutual exclusion (Mutex) ir mehānisms, kas garantē, ka noteiktā brīdī tikai viena gorutina (šūna) var piekļūt noteiktam resursam vai koda kritiskajai sekcijai.

Go valodā tam izmanto sync.Mutex tipu. Kad gorutina izsauc Lock(), tā bloķē mutexu, un citas gorutinas, kas mēģina izsaukt Lock(), gaidīs, līdz mutex tiks atbloķēts ar Unlock().

Piemērs:

var mu sync.Mutex
var counter int

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

Šajā piemērā increment droši palielina counter vērtību, novēršot vienlaicīgu piekļuvi no vairākām gorutīnām.