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 για να αποφύγουμε συνθήκες αγώνα και να διασφαλίσουμε σωστή λειτουργία σε περιβάλλοντα με ταυτόχρονη πρόσβαση.