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.