Sobes.tech
Middle

Mis on Mutex?

sobes.tech AI

Vastus AI-lt

Mutex (vastastikune välistus) on Go-s kasutatav sünkroniseerimismehhanism, mis takistab mitme goroutine'i samaegset juurdepääsu jagatud ressurssidele, näiteks muutujatele või andmestruktuuridele. Mutex tagab, et iga hetk võib ainult üks goroutine omada lukku ja täita kriitilise koodi sektsiooni.

Näide sync.Mutex kasutamisest Go-s:

import (
    "fmt"
    "sync"
)

func main() {
    var mu sync.Mutex
    counter := 0

    increment := func() {
        mu.Lock()           // lukku võtmine
        defer mu.Unlock()   // lukust vabastamine
        counter++
    }

    var wg sync.WaitGroup
    for i := 0; i < 1000; i++ {
        wg.Add(1)
        go func() {
            defer wg.Done()
            increment()
        }()
    }
    wg.Wait()
    fmt.Println("Counter:", counter)
}

Ilma mutex'ita võib tulemus olla ebatäpne võistlusolukordade tõttu.