Sobes.tech
Middle

Kas ir Mutex?

sobes.tech AI

Atbilde no AI

Mutex (savstarpēja izslēgšana) ir sinhronizācijas mehānisms Go valodā, kas tiek izmantots, lai novērstu vairākas gorutīnas vienlaicīgu piekļuvi kopīgiem resursiem, piemēram, mainīgajiem vai datu struktūrām. Mutex nodrošina, ka katrā brīdī tikai viena gorutina var piederēt bloķējumam un izpildīt kritisko koda sekciju.

Piemērs, kā izmantot sync.Mutex Go valodā:

import (
    "fmt"
    "sync"
)

func main() {
    var mu sync.Mutex
    skaitītājs := 0

    palielināt := func() {
        mu.Lock()           // iegūt bloķējumu
        defer mu.Unlock()   // atbrīvot bloķējumu
        skaitītājs++
    }

    var wg sync.WaitGroup
    for i := 0; i < 1000; i++ {
        wg.Add(1)
        go func() {
            defer wg.Done()
            palielināt()
        }()
    }
    wg.Wait()
    fmt.Println("Skaitītājs:", skaitītājs)
}

Bez mutex rezultāts var būt nepareizs, jo ir sacensību apstākļi.