Junior — Middle
როგორ შევინარჩუნოთ საერთო რესურსის წვდომა Map სტრუქტურის და Mutex მექანიზმის გამოყენებით?
sobes.tech AI
პასუხი AI-სგან
Go ენაში საერთო Map სტრუქტურის წვდომის სინქრონიზაციისთვის ჩვეულებრივ გამოიყენება mutex (sync.Mutex), რადგან map არ არის ნაკადი უსაფრთხო.
მაგალითი:
import (
"sync"
)
var (
mu sync.Mutex
sharedMap = make(map[string]int)
)
func writeToMap(key string, value int) {
mu.Lock() // ბლოკავს წვდომას
sharedMap[key] = value
mu.Unlock() // გაუქმებს ბლოკს
}
func readFromMap(key string) (int, bool) {
mu.Lock()
val, ok := sharedMap[key]
mu.Unlock()
return val, ok
}
ამ გზით, Map-ში წაკითხვამდე ან დაწერამდე mutex-ი ბლოკდება, რათა თავიდან აიცილოს შეჯახების პირობები და უზრუნველყოს სწორი მუშაობა კონკურენტულ გარემოში.