Sobes.tech
Middle

Τι είναι το Mutex;

sobes.tech AI

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

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

Παράδειγμα χρήσης του sync.Mutex στο Go:

import (
    "fmt"
    "sync"
)

func main() {
    var mu sync.Mutex
    μετρητής := 0

    αύξηση := func() {
        mu.Lock()           // απόκτηση κλειδώματος
        defer mu.Unlock()   // απελευθέρωση κλειδώματος
        μετρητής++
    }

    var wg sync.WaitGroup
    for i := 0; i < 1000; i++ {
        wg.Add(1)
        go func() {
            defer wg.Done()
            αύξηση()
        }()
    }
    wg.Wait()
    fmt.Println("Μετρητής:", μετρητής)
}

Χωρίς Mutex, το αποτέλεσμα μπορεί να είναι εσφαλμένο λόγω συνθηκών αγώνα.