Go menawarkan dua pendekatan untuk keselamatan concurrency: channel ("berkongsi memori dengan berkomunikasi") dan paket sync (mutex/kunci untuk melindungi memori bersama secara langsung). Meskipun filosofi channel-first Go, sync primitives sering kali merupakan pilihan yang lebih sederhana dan lebih cekap untuk melindungi keadaan bersama.
sync.Mutex — lindungi keadaan bersama dengan kunci
Counter {
mu sync.Mutex
count
}
Increment() {
c.mu.Lock()
c.mu.Unlock()
c.count++
}
