Sobes.tech
Junior — Middle

Μπορείς να εξηγήσεις τι είναι η αμοιβαία αποκλεισμός (Mutex) και πώς λειτουργεί;

sobes.tech AI

Απάντηση από AI

Ο αμοιβαίος αποκλεισμός (Mutex) είναι ένας μηχανισμός συγχρονισμού που διασφαλίζει ότι σε μια δεδομένη στιγμή μόνο μια goroutine (νήμα) μπορεί να έχει πρόσβαση σε έναν πόρο ή σε μια κρίσιμη ενότητα κώδικα.

Στη Go, για αυτό χρησιμοποιείται ο τύπος sync.Mutex. Όταν μια goroutine καλεί Lock(), μπλοκάρει το mutex, και άλλες goroutines που προσπαθούν να καλέσουν Lock() θα περιμένουν μέχρι το mutex να ξεκλειδωθεί με Unlock().

Παράδειγμα:

var mu sync.Mutex
var counter int

func increment() {
    mu.Lock()
    defer mu.Unlock()
    counter++
}

Σε αυτό το παράδειγμα, η increment αυξάνει με ασφάλεια την τιμή του counter, αποτρέποντας ταυτόχρονη πρόσβαση από πολλαπλές goroutines.