Sobes.tech
Middle

რა არის Mutex?

sobes.tech AI

პასუხი AI-სგან

Mutex (ურთიერთგამოვრიცხავი) არის სინქრონიზაციის მექანიზმი Go-ში, რომელიც გამოიყენება მრავალ goroutine-ის ერთდროულად წვდომის თავიდან ასაცილებლად საერთო რესურსებზე, მაგალითად, ცვლადებზე ან მონაცემთა სტრუქტურებზე. 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-ის გარეშე, შედეგი შეიძლება იყოს არასწორი, კონკურენციის პირობების გამო.