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