Pendahuluan
Bahasa pemrograman Go, yang sering disebut Golang, dirancang dengan fitur bawaan untuk mempermudah pemrograman konkurensi dan paralelisme. Kedua konsep ini sering disalahartikan sebagai hal yang sama, padahal memiliki perbedaan mendasar. Artikel ini akan membahas perbedaan antara konkurensi dan paralelisme di Go.
Definisi Konkurensi dan Paralelisme
Konkurensi
Konkurensi adalah kemampuan suatu program untuk mengelola beberapa tugas yang mungkin tidak berjalan secara bersamaan, tetapi dapat mengurus banyak tugas secara efisien. Dalam Go, hal ini dicapai dengan menggunakan goroutine dan channel.
Paralelisme
Paralelisme adalah kemampuan menjalankan beberapa tugas secara bersamaan pada waktu yang sama. Dalam konteks ini, tugas-tugas benar-benar berlangsung bersamaan di berbagai core CPU. Go mendukung paralelisme dengan memanfaatkan fasilitas bawaan seperti goroutine dan backend yang mendukung multi-core processing.
Implementasi Konkurensi di Go
Konkurensi di Go sangat mudah diimplementasikan berkat adanya goroutine. Goroutine adalah fungsi atau metode yang berjalan bersamaan dengan fungsi lainnya. Untuk membuat goroutine, cukup gunakan kata kunci go sebelum pemanggilan fungsi.
func printNumbers() { for i := 1; i <= 5; i++ { fmt.Println(i) }}go printNumbers()
Contoh di atas menunjukkan bagaimana menjalankan fungsi printNumbers
sebagai goroutine.
Implementasi Paralelisme di Go
Untuk mendukung paralelisme, Go menyediakan paket runtime
yang memungkinkan kita mengatur jumlah maksimum CPU yang dapat digunakan oleh goroutine.
import "runtime"func main() { runtime.GOMAXPROCS(4) go func() { fmt.Println("Goroutine 1") }() go func() { fmt.Println("Goroutine 2") }()}
Dengan menggunakan runtime.GOMAXPROCS(4)
, kita mengatur agar program dapat menggunakan hingga 4 CPU core.
Perbedaan Utama antara Konkurensi dan Paralelisme
- Konkurensi: Mengelola banyak tugas sekaligus tanpa harus berjalan bersamaan.
- Paralelisme: Menjalankan banyak tugas secara bersamaan di waktu yang bersamaan.
Kesimpulan
Memahami perbedaan antara konkurensi dan paralelisme sangat penting dalam pemrograman Go. Meskipun keduanya memiliki tujuan yang berbeda, kombinasi penggunaan keduanya dapat meningkatkan performa aplikasi secara signifikan. Dengan fitur bawaan seperti goroutine dan channel, serta paket runtime, program Go dapat memanfaatkan keunggulan MT multi-core secara optimal.
+ There are no comments
Add yours