Membedah Konkurensi pada 'Elixir'
(underjord.io)- Tulisan ini membahas pengalaman penulis dengan bahasa pemrograman Elixir, dengan fokus pada fitur konkurensi dan paralelismenya.
- Penulis telah menggunakan Elixir sebagai bahasa pemrograman utama selama 5-6 tahun terakhir dan mengakui performanya serta minimnya kekurangan.
- Penulis membandingkan model konkurensi Elixir dengan PHP dan Python, serta berpendapat bahwa model konkurensi PHP bergantung pada web server, sedangkan Python mengalami kesulitan dalam konkurensi karena Global Interpreter Lock (GIL).
- Elixir dibangun di atas Erlang dan mesin virtual Erlang (BEAM), yang dirancang untuk menjalankan banyak proses ringan dan menyediakan fondasi bagi konkurensi dan paralelisme.
- BEAM membuat thread untuk scheduler saat mulai berjalan, dan secara default menangani penjadwalan proses satu per satu untuk setiap inti CPU yang tersedia.
- Penulis menjelaskan bahwa sifat pemrograman fungsional immutable pada Elixir dan Erlang dipilih secara praktis untuk mencapai tingkat konkurensi dan paralelisme yang tinggi.
- Proses di Elixir tidak berbagi state dan hanya dapat berkomunikasi secara asinkron melalui pengiriman pesan, sehingga menjamin eksekusi konkurensi dan paralel yang aman.
- Penulis mencatat bahwa saat menulis kode dengan Elixir, sebagian besar permintaan web diproses di dalam satu proses, sehingga tidak perlu terlalu mengkhawatirkan prinsip-prinsip dasar ini.
- Elixir menyediakan mekanisme async/await untuk pekerjaan konkurensi, yang diimplementasikan dalam modul Task, dan ada fungsi Task.async_stream yang menjalankan Task untuk setiap item yang dapat dienumerasi.
- Penulis menyimpulkan bahwa opsi konkurensi dan paralelisme yang sangat baik di Elixir dan Erlang bukanlah tambahan belakangan, melainkan dibangun ke dalam fondasi runtime, sehingga konkurensi di BEAM tidak berbahaya atau sulit.
Belum ada komentar.