Concurrency adalah fitur andalan Go. Keyword go menjalankan fungsi sebagai goroutine yang ringan, channel menjadi saluran komunikasi antar goroutine, dan select mengoordinasikan banyak operasi sekaligus. Section ini membahas seluruh fondasi tersebut, paket sync, context untuk pembatalan, pola worker pool dan pipeline, hingga pencegahan data race dan goroutine leak.
Bedakan concurrency dan parallelism serta peran GOMAXPROCS.
Buka → # GoroutineJalankan fungsi secara ringan dengan goroutine dan sinkronkan selesai kerjanya.
Buka → # ChannelKirim dan terima data antar goroutine dengan channel tanpa shared memory.
Buka → # Buffered dan Unbuffered ChannelPilih channel buffered atau unbuffered sesuai kebutuhan sinkronisasi.
Buka → # Channel DirectionBatasi channel menjadi kirim-saja atau terima-saja pada parameter.
Buka → # selectTunggu beberapa operasi channel sekaligus dengan select.
Buka → # sync.WaitGroupSinkronkan penyelesaian sekelompok goroutine dengan WaitGroup.
Buka → # sync.Mutex dan sync.RWMutexLindungi shared state dengan mutex dan read-write mutex.
Buka → # sync.OncePastikan inisialisasi hanya berjalan tepat satu kali.
Buka → # Atomic OperationOperasi counter sederhana dengan sync/atomic tanpa mutex.
Buka → # contextBawa deadline, sinyal pembatalan, dan nilai lintas batas API.
Buka → # Cancellation dan TimeoutBatalkan operasi panjang dan pasang batas waktu eksekusi.
Buka → # Worker PoolBatasi jumlah goroutine pekerja dengan pola worker pool.
Buka → # PipelineRangkai tahapan pemrosesan dengan channel yang berurutan.
Buka → # Race ConditionKenali data race, semantik loop variable, dan deteksi dengan go test -race.
Buka → # Mencegah Goroutine LeakHentikan goroutine yang menggantung dengan context dan channel tutup.
Buka →