Sobes.tech
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() κάθε φορά, αποτρέποντας λανθασμένες αλλαγές στα κοινά δεδομένα.