Sobes.tech
Middle

Mutex چیست؟

sobes.tech AI

Ҷавоб аз AI

Mutex (муҳофизаи мутақобил) механизми ҳамоҳангсозӣ дар Go мебошад, ки барои пешгирии дастрасии ҳамзамон ба захираҳои умумӣ, масалан тағйирёбандаҳо ё сохторҳои маълумот, истифода мешавад. Mutex кафолат медиҳад, ки дар ҳар лаҳза танҳо як goroutine метавонад блокиро дошта бошад ва қисмати критикии кодиро иҷро кунад.

Масалан истифодаи sync.Mutex дар Go:

import (
    "fmt"
    "sync"
)

func main() {
    var mu sync.Mutex
    ҳисоббарор := 0

    афзоиш диҳед := func() {
        mu.Lock()           // гирифтани блокировка
        defer mu.Unlock()   // озод кардани блокировка
        ҳисоббарор++
    }

    var wg sync.WaitGroup
    for i := 0; i < 1000; i++ {
        wg.Add(1)
        go func() {
            defer wg.Done()
            афзоиш диҳед()
        }()
    }
    wg.Wait()
    fmt.Println("Ҳисоббарор:", ҳисоббарор)
}

Бе Mutex, натиҷа метавонад нодуруст бошад, бо сабаби шароити рақобат.