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-ის გარეშე, შედეგი შეიძლება იყოს არასწორი, კონკურენციის პირობების გამო.