Junior — Middle
Πώς υλοποιείται ο μηχανισμός αμοιβαίας εξαιρέσεως με τη χρήση Mutex στη γλώσσα Go;
sobes.tech AI
Απάντηση από AI
Στη γλώσσα Go, για την υλοποίηση αμοιβαίας εξαιρέσεως (mutex), χρησιμοποιείται ο τύπος sync.Mutex. Επιτρέπει την προστασία κρίσιμων τμημάτων του κώδικα από ταυτόχρονη πρόσβαση από πολλαπλές goroutines, αποτρέποντας καταστάσεις αγώνα.
Βασικές λειτουργίες:
Lock()— κλειδώνει το mutex, εμποδίζοντας άλλες goroutines να έχουν πρόσβαση.Unlock()— ξεκλειδώνει το mutex, επιτρέποντας σε άλλες goroutines να συνεχίσουν.
Παράδειγμα χρήσης:
package main
import (
"fmt"
"sync"
)
func main() {
var mu sync.Mutex
counter := 0
mu.Lock() // Κλειδώνει το mutex
counter++
fmt.Println("Μετρητής:", counter)
mu.Unlock() // Ξεκλειδώνει το mutex
}
Σε περιβάλλοντα πολλαπλών νημάτων, το mutex διασφαλίζει ότι μόνο μια goroutine εκτελεί τον κώδικα μεταξύ Lock() και Unlock() κάθε φορά, αποτρέποντας λανθασμένες αλλαγές στα κοινά δεδομένα.