Sobes.tech
Middle

Mutex nima?

sobes.tech AI

AIdan javob

Mutex (mutual exclusion) — bu Go'da sinxronizatsiya mexanizmi bo'lib, u umumiy resurslarga, masalan, o'zgaruvchilar yoki ma'lumotlar tuzilmalariga bir vaqtning o'zida bir nechta goroutinlarning kirishini oldini oladi. Mutex har bir vaqtda faqat bitta goroutinning blokni egallashiga va kritik bo'limni bajarishiga imkon beradi.

Go'da sync.Mutex dan foydalanish misoli:

import (
    "fmt"
    "sync"
)

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

    increment := func() {
        mu.Lock()           // blokni egallash
        defer mu.Unlock()   // blokni bo'shatish
        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)
}

Mutex bo'lmasa, natija noto'g'ri bo'lishi mumkin, chunki raqobat sharoitlari yuzaga keladi.