Sobes.tech
Junior — Middle

Σε ποιες λειτουργίες λειτουργεί ο μηχανισμός αμοιβαίας αποκλεισμού (Mutex);

sobes.tech AI

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

Ο μηχανισμός αμοιβαίας αποκλεισμού (Mutex) στη Go λειτουργεί σε δύο βασικές λειτουργίες:

  1. Κλειδωμένο (locked) — όταν ένα goroutine αποκτά το mutex, άλλα goroutines που προσπαθούν να το αποκτήσουν μπλοκάρονται και περιμένουν την απελευθέρωσή του.

  2. Ξεκλειδωμένο (unlocked) — όταν το mutex είναι ελεύθερο και διαθέσιμο για απόκτηση.

Το mutex παρέχει αποκλειστική πρόσβαση σε κοινόχρηστους πόρους, αποτρέποντας την ταυτόχρονη εκτέλεση κρίσιμου τμήματος κώδικα από πολλά goroutines.

Παράδειγμα χρήσης:

var mu sync.Mutex
var counter int

func increment() {
    mu.Lock()           // κλειδώνει το mutex
    defer mu.Unlock()   // απελευθερώνει το mutex μετά την εκτέλεση
    counter++
}

Έτσι, το mutex λειτουργεί σε λειτουργία κλειδώματος και ξεκλειδώματος, διασφαλίζοντας διαδοχική πρόσβαση στα δεδομένα.