Το Go προσφέρει δύο προσεγγίσεις για ασφάλεια ταυτοχρονισμού: channels ("μοιράστε μνήμη μέσω επικοινωνίας") και το πακέτο sync (mutexes/κλειδώματα για προστασία κοινόχρηστης μνήμης απευθείας). Παρά τη φιλοσοφία του Go που προτιμά τα channels, τα sync primitives είναι συχνά η απλούστερη και αποδοτικότερη επιλογή για προστασία κοινόχρηστης κατάστασης.
sync.Mutex — προστασία κοινόχρηστης κατάστασης με ένα κλείδωμα
Counter {
mu sync.Mutex
count
}
Increment() {
c.mu.Lock()
c.mu.Unlock()
c.count++
}
