يوفر Go طريقتين لأمان التزامن: channels ("شارك الذاكرة من خلال التواصل") وحزمة sync (mutexes/locks لحماية الذاكرة المشتركة مباشرة). على الرغم من فلسفة Go التي تفضل channels، فإن بدائل sync غالباً ما تكون الخيار الأبسط والأكثر كفاءة لحماية الحالة المشتركة.
sync.Mutex — حماية الحالة المشتركة بقفل
Counter {
mu sync.Mutex
count
}
Increment() {
c.mu.Lock()
c.mu.Unlock()
c.count++
}
