Sobes.tech
Junior — Middle

როგორ ხორციელდება ურთიერთგამორიცხვის მექანიზმი Mutex-ის გამოყენებით Go ენაში?

sobes.tech AI

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

Go ენისთვის, ურთიერთგამორიცხვის (mutex) განხორციელებისთვის გამოიყენება sync.Mutex ტიპი. ეს საშუალებას აძლევს კოდის კრიტიკული ნაწილების დაცვას ერთდროულად რამდენიმე goroutine-დან, თავიდან აიცილოს რბოლა პირობები.

ძირითადი ოპერაციები:

  • Lock() — იკეტება mutex, აჩერებს სხვა goroutine-ების წვდომას.
  • Unlock() — იხსნება mutex, საშუალებას აძლევს სხვა goroutine-ებს განაგრძონ.

გამოყენების მაგალითი:

package main

import (
    "fmt"
    "sync"
)

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

    mu.Lock() // mutex-ის დაკეტვა
    counter++
    fmt.Println("გამომთვლელი:", counter)
    mu.Unlock() // mutex-ის გახსნა
}

მრავალთრაკიანი გარემოში mutex უზრუნველყოფს, რომ მხოლოდ ერთი goroutine ახორციელებს კოდს Lock() და Unlock() შორის ერთდროულად, რაც თავიდან აცილებს გაზიარებული მონაცემების არასწორ ცვლილებებს.