Junior — Middle
Kaip įgyvendinamas tarpusavio išskyrimo mechanizmas naudojant Mutex Go kalboje?
sobes.tech AI
Atsakymas iš AI
Go kalboje mutex (mutual exclusion) įgyvendinimui naudojamas sync.Mutex tipas. Jis leidžia apsaugoti kritinius kodo segmentus nuo vienu metu prieigos kelių gorutinių, užkertant kelią lenktynių sąlygoms.
Pagrindinės operacijos:
Lock()— užrakina mutex, neleidžiant kitoms gorutinėms prieiti.Unlock()— atrakina mutex, leidžiant kitoms gorutinėms tęsti.
Naudojimo pavyzdys:
package main
import (
"fmt"
"sync"
)
func main() {
var mu sync.Mutex
counter := 0
mu.Lock() // Užrakina mutex
counter++
fmt.Println("Skaitiklis:", counter)
mu.Unlock() // Atrakina mutex
}
Daugiagijų aplinkoje mutex garantuoja, kad tik viena gorutina vienu metu vykdys kodą tarp Lock() ir Unlock(), taip išvengiant neteisingų bendro naudojimo duomenų pakeitimų.