Latihan 1 dari materi Mutex & sync package di Go — praktek dengan editor kode interaktif, test case otomatis, dan hint terpandu. Langsung jalan di browser.
Kode awal sudah punya counter int dan mu sync.Mutex di level package, fungsi increment() yang masih kosong, dan main yang menjalankan 100 goroutine dengan sync.WaitGroup, masing-masing memanggil increment() 10 kali, lalu mencetak Counter: %d. Biarkan main seperti itu.
Isi increment(), berurutan:
- Kunci mutex-nya:
mu.Lock().
- Jadwalkan pembukaan kuncinya saat fungsi selesai:
defer mu.Unlock().
- Naikkan counter satu:
counter++.
Output yang diharapkan:
Counter: 1000
Yang dicek: ada Counter: 1000 di output, kodenya memanggil .Lock( dan .Unlock(, dan counter dinaikkan di dalam increment() dengan urutan yang benar: Lock dulu, lalu counter naik, dan kuncinya baru dibuka sesudahnya (lewat defer atau Unlock sesudah counter++). Sesudah program-mu jalan, penguji memanggil increment() sekali lagi lalu mencetak counter, dan hasilnya harus 1001.