Junior — Middle
რა ტიპის ურთიერთგამორიცხვები (Mutex) არის განხორციელებული Go-ს სტანდარტულ ბიბლიოთეკაში?
sobes.tech AI
პასუხი AI-სგან
Go-ის სტანდარტულ ბიბლიოთეკაში განხორციელებულია მთავარი ურთიერთგამორიცხვის ტიპი — sync.Mutex. ეს არის მარტივი mutex, რომელიც უზრუნველყოფს ბლოკირებას და გათავისუფლებას კრიტიკული სექციების კოდის დაცვაში ერთდროულად წვდომისგან.
გარდა ამისა, არსებობს sync.RWMutex — mutex-ის გაფართოებული ვერსია, რომელიც საშუალებას აძლევს რამდენიმე მკითხველს ერთდროულად შეინარჩუნოს ბლოკირება, მაგრამ წერა იკეტება ექსკლუზიურად.
sync.Mutex-ის გამოყენების მაგალითი:
var mu sync.Mutex
var counter int
func increment() {
mu.Lock()
defer mu.Unlock()
counter++
}
და მაგალითი sync.RWMutex-თან:
var rwMu sync.RWMutex
var data int
func readData() int {
rwMu.RLock()
defer rwMu.RUnlock()
return data
}
func writeData(val int) {
rwMu.Lock()
defer rwMu.Unlock()
data = val
}