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() შორის ერთდროულად, რაც თავიდან აცილებს გაზიარებული მონაცემების არასწორ ცვლილებებს.